Czy istnieje sposób na przywrócenie kopii zapasowej bazy danych SQL Server 2012 na SQL Server 2008?
Próbowałem załączyć plik, to nie działa.
Czy istnieje sposób na przywrócenie kopii zapasowej bazy danych SQL Server 2012 na SQL Server 2008?
Próbowałem załączyć plik, to nie działa.
Odpowiedzi:
Masz kilka opcji:
Opcja A : Wypisuj bazę danych w trybie zgodności za pomocą opcji Wygeneruj skrypt:
Uwaga: Jeśli wykonasz skrypt bazy danych ze schematem i danymi, w zależności od rozmiaru danych, skrypt będzie ogromny i nie będzie obsługiwany przez SSMS, sqlcmd lub osql (może być również w GB).
Opcja B:
Najpierw najpierw wypisz tabele ze wszystkimi indeksami, FK itp. I utwórz puste tabele w docelowej bazie danych - opcja TYLKO w SCHEMIE (Brak danych).
Użyj BCP, aby wstawić dane
bcp odczyt danych za pomocą poniższego skryptu. ustaw SSMS w trybie tekstowym i skopiuj dane wyjściowe wygenerowane przez poniższy skrypt w pliku nietoperza.
-- save below output in a bat file by executing below in SSMS in TEXT mode
-- clean up: create a bat file with this command --> del D:\BCP\*.dat
select '"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" ' /* path to BCP.exe */
+ QUOTENAME(DB_NAME())+ '.' /* Current Database */
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'
+ QUOTENAME(name)
+ ' out D:\BCP\' /* Path where BCP out files will be stored */
+ REPLACE(SCHEMA_NAME(schema_id),' ','') + '_'
+ REPLACE(name,' ','')
+ '.dat -T -E -SServerName\Instance -n' /* ServerName, -E will take care of Identity, -n is for Native Format */
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
/*and schema_name(schema_id) <> 'unwantedschema' */ /* Optional to exclude any schema */
order by schema_name(schema_id)
Uruchom plik bat, który wygeneruje pliki .dat w określonym folderze.
Uruchom ponownie skrypt poniżej na serwerze docelowym z SSMS w trybie tekstowym.
--- Execute this on the destination server.database from SSMS.
--- Make sure the change the @Destdbname and the bcp out path as per your environment.
declare @Destdbname sysname
set @Destdbname = 'destinationDB' /* Destination Database Name where you want to Bulk Insert in */
select 'BULK INSERT '
/*Remember Tables must be present on destination database */
+ QUOTENAME(@Destdbname) + '.'
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))
+ '.' + QUOTENAME(name)
+ ' from ''D:\BCP\' /* Change here for bcp out path */
+ REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '')
+ '.dat'' with ( KEEPIDENTITY, DATAFILETYPE = ''native'', TABLOCK )'
+ char(10)
+ 'print ''Bulk insert for ' + REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') + ' is done... '''
+ char(10) + 'go'
from sys.tables
where is_ms_shipped = 0
and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
and schema_name(schema_id) <> 'unwantedschema' /* Optional to exclude any schema */
order by schema_name(schema_id)
Uruchom dane wyjściowe za pomocą SSMS, aby wstawić dane z powrotem do tabel.
Jest to bardzo szybka metoda BCP, ponieważ wykorzystuje tryb macierzysty.
Some SSIDs and linked servers didn't go across properly
. Połączone serwery muszą zostać ręcznie skrypty. Identyfikatory SSID mogą być przesyłane do sieci za pomocą sp_helprevlogin. Zadania SQLAgent, pakiety ssis itp. Należy przenosić zgodnie z własnymi potrzebami. Celem tej metody jest uzyskanie danych tak szybko, jak to możliwe, podczas obniżania lub łączenia 2 baz danych.
Nie, nie możesz cofać się, tylko do przodu. Możesz utworzyć pustą bazę danych w 2008 roku, a następnie użyć kreatora Generuj skrypty w Management Studio do skryptu schematu i danych (lub narzędzi porównawczych innych firm z Red Gate i innych). Upewnij się, że ustawiłeś właściwą wersję docelową na 2008 r., A będziesz musiał wdrożyć niekompatybilne rzeczy (np. OFFSET lub FORMAT), których mogłeś użyć w 2012 r.
Nie ma obsługiwanego sposobu, aby to zrobić, ponieważ SQL Server nie pozwala na tego rodzaju kompatybilność.
Możesz to zrobić
przywróć bazę danych na SQL 2012
generuj skrypty dla obiektów i danych
Jeśli nie masz programu SQL Server 2012, możesz użyć narzędzi innych firm do odczytu kopii zapasowych oraz wyodrębnienia danych i struktury.
W takim przypadku po prostu utwórz pustą bazę danych w SQL 2008 i użyj narzędzi takich jak ApexSQL Diff i ApexSQL Data Diff do synchronizacji obiektów i danych. Można je również znaleźć u innych głównych dostawców, takich jak Red-Gate lub Idera.