To nie jest prosta metoda T-SQL. Mimo że generuje czyste rozwiązanie T-SQL, które można zastosować do bazy danych.
Wyniki mogą się różnić w zależności od DB ... Na przykład słaba integralność referencyjna może zrobić to nieco trudniejsze ..
Również ten wyposażony jest zrobić w WŁASNE Zrzeczenie :-)
- Pobierz DB chcesz migrować do projektu SSDT
http://msdn.microsoft.com/en-us/library/azure/jj156163.aspx http://blogs.msdn.com/b/ssdt/archive/2012/04/19/migrating-a-database-to-sql-azure-using-ssdt.aspx
To jest dobry sposób na przeniesienie dowolnego schematu na platformę Azure, niezależnie od ...Lepiej jest po prostu utworzyć plik bacpac ... naprawiając ... eksportując ... naprawiając ... etc ... Więc polecam robienie tego w dowolnym momencie, kiedy chcesz przenieść DB na Azure
Dla poprawek FILLFACTOR I po prostu użyłem find i replace, aby usunąć wszystkie FILLFACTORS z wygenerowanych plików schematu ... Na szczęście DB, którego używałem, miało ustawione wszystkie wartości 90, więc było dość łatwo zrobić rozwiązanie, aby znaleźć i wymienić (CTRL-SHIFT-F) ... Jeśli twoje są różne, prawdopodobnie możesz użyć funkcji wyszukiwania RegEx Visual Studio, aby znaleźć wszystkie czynniki fillfactors i po prostu usunąć je z indeksów.
Nie jestem świetny w RegEx ale myślę, że to działa
WITH \((.)*FILLFACTOR(.)*\)
W tym momencie będziesz musiał naprawić żadnych dodatkowych wyjątków całym zgodności Azure .. Linki przewidziane opisać, jak się do tego zabrać Ten
- Teraz jesteś w momencie, w którym masz projekt SSDT zgodny z SQL AZURE.
Nadchodzi DO na własne ryzyko CZĘŚCI
użyłem tych skryptów, aby usunąć wszystkie FK, PK i UNIQUE z DB.
while(exists(select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE IN ('FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE')))
begin
declare @sql nvarchar(2000)
SELECT TOP 1 @sql=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME
+ '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE IN ('FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE')
exec (@sql)
end
declare @qry nvarchar(max);
select @qry =
(SELECT 'DROP INDEX [' + ix.name + '] ON [' + OBJECT_NAME(ID) + ']; '
FROM sysindexes ix
WHERE ix.Name IS NOT null and ix.OrigFillFactor <> 0
for xml path(''));
exec sp_executesql @qry
Robię to, ponieważ AFAIK jedynym sposobem, aby całkowicie usunąć opcję współczynnika wypełnienia, jest upuszczenie i ponowne utworzenie indeksu. Jest to związane z kaskadowym zbiorem problemów: - PK z czynnikami wypełniającymi wymaga odrzucenia FK itp. Prawdopodobnie jest to mądrzejszy sposób, aby nie usunąć WSZYSTKICH FK i PK, a także patrzeć na drzewa zależności. ..
teraz wróć do projektu Azure Zgodny SSDT i zrobić porównanie schematu tego projektu przed swoim DB ... To będzie utworzyć skrypt, który odtwarza wszystkie swoje FK'S, PK i Unique Constraints (bez współczynnika wypełnienia) .... W tym momencie możesz po prostu kliknąć "update" lub kliknąć przycisk po prawej stronie aktualizacji, która wygeneruje skrypt, którego możesz użyć ... uzbrojony w:
- skrypt powyżej, aby usunąć FK, Pks i Unique.
- Skrypt stworzony przez SSDT
- Obszerne badania i przegląd powiedział skrypty w celu zapewnienia nic nie zginęło
powinien być w stanie wykonać aktualizację DB do Azure SCHEMA zgodnej
Dodatkowe myśli:
W moim przypadku współczynniki wypełnienia w DB produkcji nie były tak naprawdę g użyteczne. Zostały one stworzone jako domyślne zadanie. W twoim przypadku współczynniki wypełnienia mogą być ważne, więc nie usuwaj ich wszystkich na pudełku z produktem innym niż Azure, nie znając konsekwencji.
Należy uwzględnić dodatkowe kwestie w systemie produkcyjnym ... Na przykład może to spowodować opóźnienia w odbijaniu lustrzanym i może spowodować, że pliki dzienników będą rósł w sposób nieprzewidziany. Oba mają znaczenie tylko wtedy, gdy aplikujesz bezpośrednio do produkcji ...
Byłoby miło, gdyby ustawiając je wszystkie na współczynnik wypełnienia 100 pracował: -/
Jest 3rd narzędzi firm tam (tak słyszałem), które można wykorzystać do migracji do Azure ...
Inną opcją jest użycie https://sqlazuremw.codeplex.com/
używać, aby utworzyć schemat, który jest zgodny Azure, a następnie używa BCP skopiować wszystkie dane.
ALE jeśli chcesz, aby twój aktualny SCHEMA Azure był zgodny, abyś mógł utworzyć plik bacpac do przesłania na Azure, zadziałało to dla mnie tylko raz, gdy musiałem to zrobić.
EDIT: Azure V12 obsługuje wypełnić czynniki
Jeśli spróbuję z fillfactor = 0, otrzymam następujący komunikat: Fillfactor 0 nie jest prawidłowym procentem; fillfactor musi mieścić się w przedziale od 1 do 100. I nedd ustawił go na 0, aby móc eksportować mój DB do bacpac. – danielUrrero
Ustawienie na 0 nie działa (każda liczba od 1 do 100) – Rodney
tylko po to, aby zrozumieć twoje wymaganie: dlaczego chcesz ustawić go na 0? –