2013-08-31 8 views
8

Sto usando il seguente comando per eseguire sqlpackage per esportare un bacpac per un db locale.Esporta SqlDatabase in Bacpac utilizzando SqlPackage.exe non riesce su fillfactor

"C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin \ sqlpackage.exe"/azione: Export /tf:".\dbname_Baseline.bacpac"/ SourceConnectionString: "XXXXXXXXXXXX"

Non riesce a dire "Chiave primaria elemento: [dbo]. [Nome_pk] ha una proprietà FillFactor non supportata e non è supportata se utilizzata come parte di un pacchetto di dati."

Ho capito che fillfactor non è supportato ma c'è qualcosa per far sì che ignori le proprietà non supportate?

Grazie

Segna

+0

Provare ad aggiornare i pacchetti DacFx e SMO da [nuget] (https://www.nuget.org/packages) o installare il più recente [SSMS] (https://msdn.microsoft.com/en-us/library /mt238290.aspx). Questo dovrebbe aggiornare la DLL necessaria per I/E nel tuo GAC. – Pio

risposta

1

Superata l'interruttore

/p:IgnoreFillFactor ={ True | False } 
+1

Ciao, ho capito che "IgnoreFillFactor" non è un argomento valido per l'azione "Esporta". quando provo a mettere questo argomento alla mia riga di comando. –

+0

Sembra un parametro per/action: Pubblica invece di/action: Export. (ottenere un db pronto per sql azure è divertente no?) –

1

ho avuto modo di sperimentare con l'esportazione in BacPac per un piccolo database di circa 1 GB ed è possibile riconfigurare il fattore di riempimento nel database. In SQL Server Manager Studio, basta scrivere un "drop and re-create" per l'indice, modificare lo script generato per rimuovere la specifica del fillfactor, eseguire lo script e ricreare l'indice con un fattore di riempimento predefinito accettabile per sqlpackage.exe . Questo dovrebbe funzionare sia per i PK che per gli indici, dovrebbe essere veloce per i piccoli database e non dovrebbe avere effetti negativi sul database.

Mi rendo conto che questo non risponde alla domanda sulla creazione di sqlpackage.exe ignorare alcuni errori, ma probabilmente è un modo migliore di risolvere il problema poiché lo fa direttamente nel database.

+0

Questa è una soluzione valida per i piccoli database. Tuttavia, abbiamo un grande database con oltre 270 indici di problemi! Ci deve essere una soluzione migliore per questo! –

+0

Per espandere la mia risposta è anche possibile modificare il fattore di riempimento utilizzando il comando REPOSTANTE INDICE ALTER, non è necessario utilizzare la GUI di SQL Server Manager Studio. È possibile scrivere uno script per ricostruire gli indici uno per uno con il fattore di riempimento richiesto e si potrebbero eseguire le modifiche in un periodo di tempo. Una volta che un indice viene ricostruito con il fillfactor richiesto, non dovrebbe essere necessario ricostruirlo nuovamente. Inoltre, credo che SQL Server Enterprise Edition consenta l'esecuzione online di ALTER INDEX REBUILD, che dovrebbe ridurre i tempi di inattività. – Ubercoder