2013-08-31 25 views
8

Korzystam z następującego polecenia, aby uruchomić pakiet sqlpackage w celu wyeksportowania bacpac dla lokalnej bazy danych.Eksportuj SqlDatabase do Bacpac przy użyciu SqlPackage.exe kończy się niepowodzeniem na fillfactor

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

Nie można powiedzieć "Klucz podstawowy elementu: [dbo]. [Nazwa_kompasu] ma ustawioną właściwość FillFactor nieobsługiwaną i nie jest obsługiwana, gdy jest używana jako część pakietu danych."

Rozumiem, że fillfactor nie jest obsługiwany, ale czy jest coś, co powoduje ignorowanie nieobsługiwanych właściwości?

Dzięki

Oznacz

+0

Spróbuj zaktualizować pakiety DacFx i SMO z [nuget] (https://www.nuget.org/packages) lub zainstalować najnowszy [SSMS] (https://msdn.microsoft.com/en-us/library /mt238290.aspx). To powinno zaktualizować niezbędne biblioteki dll dla I/E w twoim GAC. – Pio

Odpowiedz

1

Przełóż przełącznik

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

Witam, otrzymuję "IgnoreFillFactor" nie jest prawidłowym argumentem dla akcji "Export". kiedy próbuję umieścić ten argument w mojej linii poleceń. –

+0

To wygląda jak parametr dla/action: Opublikuj zamiast/action: Export. (uzyskanie gotowego db dla sql azure jest zabawne, czyż nie?) –

1

I zostały eksperymentowanie z eksportu do BacPac dla małej bazy około 1 GB i można przekonfigurować fillfactor w bazie danych. W SQL Server Manager Studio, po prostu skrypty "upuść i ponownie utwórz" dla indeksu, edytuj wygenerowany skrypt, aby usunąć specyfikację fillfactor, uruchom skrypt i to ponownie tworzy indeks z domyślnym współczynnikiem wypełnienia akceptowanym przez sqlpackage.exe . Powinno to działać zarówno w przypadku PK, jak i indeksów, powinno być szybkie dla małych baz danych i nie powinno mieć negatywnego wpływu na bazę danych.

Zdaję sobie sprawę, że to nie odpowiada na pytanie dotyczące robienia sqlpackage.exe ignorować niektóre błędy, ale jest to prawdopodobnie lepszy sposób rozwiązania problemu, ponieważ robi to bezpośrednio w bazie danych.

+0

To jest poprawne rozwiązanie dla małych baz danych. Mamy jednak dużą bazę danych zawierającą ponad 270 indeksów problemów! Musi to być lepsze rozwiązanie! –

+0

Aby rozwinąć moją odpowiedź, możesz również zmienić współczynnik wypełnienia za pomocą polecenia ALTER INDEX REBUILD, nie musisz używać interfejsu GUI programu Studio SQL Server Manager. Możesz napisać skrypt, aby odbudować indeksy jeden po drugim z wymaganym współczynnikiem wypełnienia, a Ty możesz uruchomić zmiany przez pewien okres czasu. Gdy indeks zostanie odbudowany z wymaganym współczynnikiem wypełnienia, nie musi być ponownie budowany. Sądzę, że wersja SQL Server Enterprise pozwala ALTER INDEX REBUILD na działanie online, co powinno skrócić przestoje. – Ubercoder