SQL Server Data Tools e funzioni di partizione


16

Sto creando uno scenario di caricamento della finestra scorrevole e le funzioni di partizione cambieranno i loro confini nel tempo.

Ho creato alcune funzioni di partizione nel mio progetto di database SQL Server Data Tools (SSDT) ​​con alcuni limiti iniziali hardcoded.

Tuttavia, col passare del tempo e i limiti delle funzioni di partizione cambiano, i futuri database SSDT pubblicheranno i limiti a quelli originali.

Esiste un modo per gestire questo scenario con grazia, possibilmente disabilitando la pubblicazione delle funzioni di partizione?

Ho provato a modificare la proprietà Build Action delle funzioni di partizione in SSDT, da quella predefinita Builda None, ma il progetto non riesce a costruire a causa di un riferimento mancante negli oggetti dipendenti.


4
Ho sempre detto che la distribuzione basata su diff è sostanzialmente rotta. Le migrazioni sono una metafora di spiegamento di gran lunga superiore !
Remus Rusanu,

Le opzioni "Ignora indice" devono essere impostate anche per evitare che SSDT ricostruisca l'indice partizionato ogni volta che viene avviata la distribuzione.

Risposte:


16

Sono stato in grado di trovare una soluzione al mio problema - spero che questo aiuti qualcun altro.

Per evitare che ogni pubblicazione di database ricrea la funzione di partizione, è possibile selezionare l' opzione Ignora schemi di partizione nella finestra di dialogo Impostazioni pubblicazione avanzate ( pulsante Avanzate ... nella finestra di dialogo Pubblica database).

Dalla descrizione dell'opzione (sottolineatura mia):

Specifica se le differenze negli schemi e nelle funzioni di partizione devono essere ignorate o aggiornate quando si pubblica su un database.

Tuttavia, se è stato definito un oggetto partizionato (tabella o indice) con compressione di pagina o riga, sebbene l' opzione Ignora schemi di partizione non ricrea più la funzione di partizione, l'oggetto partizionato verrà comunque ricreato.

Ciò accade perché l'oggetto partizionato viene scriptato con la compressione definita per partizione e poiché l'oggetto ha un numero di partizioni diverso da quello originariamente definito, SSDT ricrea l'oggetto al momento della pubblicazione. Ad esempio (formattato):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

Affinché ciò non accada, puoi anche selezionare l' opzione Ignora opzioni tabella , nella stessa finestra di dialogo Impostazioni avanzate pubblicazione - tieni presente che ignorerai altre opzioni, come ALLOW_ROW_LOCKSe ALLOW_PAGE_LOCKS( riferimento alle opzioni della tabella ).

Finestra di dialogo Impostazioni pubblicazione avanzate


1
Google mi ha appena portato qui. Informazioni fantastiche, grazie per averlo condiviso.
jamiet,

Si noti che se si utilizza la finestra di dialogo simile nelle proprietà del progetto -> Pagina di debug, le modifiche verranno salvate nel file .sqlproj.user, MA solo allo scarico del progetto.
Taran,

3

Ouch, questa non è una buona situazione. Per quanto ne so SSDT non supporta questo. La migliore soluzione che mi viene in mente è quella di utilizzare uno script di pre-distribuzione per archiviare i limiti in una tabella e quindi modificare la funzione di partizione usando quei valori nello script di post-distribuzione.


Ignora la mia risposta qui, giudicando la risposta del mio Gonsalu sopra ho chiaramente sbagliato.
jamiet,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.