Existe uma maneira de restaurar um backup do banco de dados do SQL Server 2012 para um SQL Server 2008?
Eu tentei anexar o arquivo, ele não funciona.
Existe uma maneira de restaurar um backup do banco de dados do SQL Server 2012 para um SQL Server 2008?
Eu tentei anexar o arquivo, ele não funciona.
Respostas:
Você tem algumas opções:
Opção A : Script fora do banco de dados no modo de compatibilidade usando a opção Gerar script:
Nota: Se você criar um script do banco de dados com esquema e dados, dependendo do tamanho dos dados, o script será massivo e não será tratado pelo SSMS, sqlcmd ou osql (também pode estar em GB).
Opção B:
Primeiro, escreva as tabelas primeiro com todos os índices, FKs, etc. e crie tabelas em branco no banco de dados de destino - opção com SOMENTE ESQUEMA (sem dados).
Use o BCP para inserir dados
bcp os dados usando o script abaixo. defina o SSMS no modo de texto e copie a saída gerada pelo script abaixo em um arquivo bat.
-- 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)
Execute o arquivo bat que irá gerar os arquivos .dat na pasta que você especificou.
Execute o script abaixo no servidor de destino com o SSMS no modo de texto novamente.
--- 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)
Execute a saída usando o SSMS para inserir dados novamente nas tabelas.
Este é um método bcp muito rápido, pois usa o modo nativo.
Some SSIDs and linked servers didn't go across properly
. Os servidores vinculados precisam ser scripts manualmente. Os SSIDs podem ser transferidos usando sp_helprevlogin. Trabalhos SQLAgent, pacotes ssis etc. devem ser movidos conforme suas necessidades. O objetivo deste método é obter os dados o mais rápido possível quando você está desatualizando ou mesclando 2 bancos de dados.
Não, você não pode voltar atrás, apenas avançar. Você pode criar um banco de dados vazio em 2008 e, em seguida, usar o assistente Gerar Scripts no Management Studio para criar scripts do esquema e dos dados (ou ferramentas de comparação de terceiros do Red Gate e outros). Certifique-se de definir a versão de destino correta como 2008 e precisará definir coisas incompatíveis (por exemplo, OFFSET ou FORMAT) que você pode ter usado em 2012.
Não há maneira suportada de fazer isso, porque o SQL Server não permite esse tipo de compatibilidade.
O que você pode fazer é
restaurar banco de dados no SQL 2012
gerar scripts para objetos e dados
Se você não possui o SQL Server 2012, pode usar ferramentas de terceiros para ler o backup e extrair dados e estrutura.
Nesse caso, basta criar um banco de dados vazio no SQL 2008 e usar ferramentas como ApexSQL Diff e ApexSQL Data Diff para sincronizar objetos e dados. Você também pode encontrar outros fornecedores importantes, como Red-Gate ou Idera.