Pour les professionnels de l’informatique > Forums - Accueil > SQL Server - Infra Geral > Tem como restaurar um BKP do sql 2008 no sql 2000?
Poser une questionPoser une question
 

Réponse proposéeTem como restaurar um BKP do sql 2008 no sql 2000?

  • mercredi 18 novembre 2009 14:00Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Bom dia galera!
    Estou precisando de uma ajuda qui, Tenho um SQl 2000 instalado em um servidor e fiz um BKP de uma base com nome (X), Restaurei esse BKP em um SQL que tenho em outro servidor com SQL 2008 e atualizei alguns dados nessa base de dados, mas agora eu peciso restaurar a base do SQL 200 encima do BKP feito no SQL 2008 e isso não está sendo possível.
    Ele está me exibindo uma mensagem de incompatibilidade.
    Alguem te uma solução pra esse prblema ai?
    Obrigado pela atenção.

Toutes les réponses

  • mercredi 18 novembre 2009 14:43Alexandre VM Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Olá Rogério,

    Nesse caso, você só irá conseguir exportando os dados. Não será possível fazer esse restore.

    Você poderá usar o Import/Export wizard (botão direito sobre a database/Tasks) por exemplo, para realizar essa transferência dos dados.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
  • mercredi 18 novembre 2009 15:37Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Como você realizou alterações na base de dados no SQL Server 2008, não é possível restaurar este backup no 2000.

    A não ser que você não tenha alterado o nível de compatibilidade do banco de dados.

    Você alterou o nível de compatibilidade para a versão 100?

    Se você não realizou isso, e as alterações que você fez foram somente de dados, mantendo a estrutura do banco de dados do SQL Server 2000, poderíamos fazer esse processo.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • mercredi 18 novembre 2009 15:44Alexandre VM Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Junior,

    Mesmo não alterando o nível de compatibilidade, uma vez restaurada a database no 2008, não tem como voltar!! Nesse processo de restore são feitas alterações estruturais, que não permitem o "downgrade".

    Só Exportando os dados mesmo.


    Abraço!!!!

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
  • mercredi 18 novembre 2009 17:00Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Só que não está aceitando nem exportar os dados, eu tento exportar e não aceita me exibindo uma mensagem assim

    Execute the transfer with the TransferProvider. (Error)

    Messages

    ERROR : errorCode=-1073548784 description=Executing the query "CREATE TABLE [Newcon_Teste].[dbo].[Acompanhamento_Cobranca] (
    [CODIGO_GRUPO] smallint NOT NULL,
    [CODIGO_COTA] smallint NOT NULL,
    [VERSAO] smallint NOT NULL,
    [CGC_CPF_CLIENTE] VARCHAR(14) NOT NULL,
    [TIPO] smallint,
    [CODIGO_COBRADOR] int,
    [CODIGO_SITUACAO] CHAR(3),
    [CODIGO_BEM] smallint NOT NULL,
    [DATA_CONTEMPLACAO] datetime,
    [TIPO_CONTEMPLACAO] CHAR(1),
    [PLANO_COTA] smallint,
    [DATA_ENTREGA_BEM] datetime,
    [DATA_SITUACAO] datetime,
    [CODIGO_FILIAL_COMERCIAL] smallint NOT NULL,
    [Percentual_Ideal] money,
    [Percentual_Amortizado] money,
    [Nome_Cli] VARCHAR(80) NOT NULL,
    [Descr_Sit] VARCHAR(15) NOT NULL,
    [Descr_Bem] VARCHAR(30) NOT NULL,
    [BLOQUEIA_COBRANCA] CHAR(1) NOT NULL,
    [Nome_Cob] VARCHAR(40) NOT NULL,
    [Data_Congelamento_Bem] datetime
    )
    " failed with the following error: "There is already an object named 'Acompanhamento_Cobranca' in the database.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    helpFile= helpContext=0 idofInterfaceWithError={8BDFE893-E9D8-4D23-9739-DA807BCDC2AC}

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476

    ERROR : errorCode=-1073548784 description=Executing the query "CREATE TABLE [Newcon_Teste].[dbo].[Acompanhamento_Cobranca] (
    [CODIGO_GRUPO] smallint NOT NULL,
    [CODIGO_COTA] smallint NOT NULL,
    [VERSAO] smallint NOT NULL,
    [CGC_CPF_CLIENTE] VARCHAR(14) NOT NULL,
    [TIPO] smallint,
    [CODIGO_COBRADOR] int,
    [CODIGO_SITUACAO] CHAR(3),
    [CODIGO_BEM] smallint NOT NULL,
    [DATA_CONTEMPLACAO] datetime,
    [TIPO_CONTEMPLACAO] CHAR(1),
    [PLANO_COTA] smallint,
    [DATA_ENTREGA_BEM] datetime,
    [DATA_SITUACAO] datetime,
    [CODIGO_FILIAL_COMERCIAL] smallint NOT NULL,
    [Percentual_Ideal] money,
    [Percentual_Amortizado] money,
    [Nome_Cli] VARCHAR(80) NOT NULL,
    [Descr_Sit] VARCHAR(15) NOT NULL,
    [Descr_Bem] VARCHAR(30) NOT NULL,
    [BLOQUEIA_COBRANCA] CHAR(1) NOT NULL,
    [Nome_Cob] VARCHAR(40) NOT NULL,
    [Data_Congelamento_Bem] datetime
    )
    " failed with the following error: "There is already an object named 'Acompanhamento_Cobranca' in the database.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    helpFile= helpContext=0 idofInterfaceWithError={8BDFE893-E9D8-4D23-9739-DA807BCDC2AC} (Microsoft.SqlServer.DtsTransferProvider)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476




    se quizer por favor me mande um e-mail para rogerio.sistemas@homail.com que eu vou mandar um rint da tela que está dando aqui. No forum não cnssegui postar imagem.
    Obrigado.

    - Create a temporary table transfer package for (Stopped)

    - Execute transfer package for (Stopped)

    Copying to (Stopped)

     

    no momento que executo a importação dos dados ou exportação ele exibe estas mensagens ai.
    Eu seleciono o servidor e a base de origem, depois seleciono o servidor e a  base de destino, ele selecion tudo normalmnte mas quando mando executar ele me dá essa mensagem.
  • mercredi 18 novembre 2009 17:15Alexandre VM Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Você está mandando gravar sobre a database antiga do 2000. Faz o seguinte, crie uma nova database para receber os dados. O erro está acontecendo pois já existem lá os objetos que está tentando transferir.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
  • mercredi 18 novembre 2009 17:16Gustavo Maia AguiarMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Boa Tarde,

    Se sua base for relativamente pequena, você pode utilizar o Database Publishing Wizard para gerar os scripts de insert e aplicá-los na base SQL Server 2000. O Database Publishing Wizard é uma ferramenta a parte disponível gratuitamente no site da Microsoft.

    Se não for possível utilizá-la, recomendo criar uma base vazia no SQL Server 2000 e exportar os dados. A mensagem de erro diz que as tabelas já existem.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    A Impedância, o Mapeamento Objeto Relacional e Implementações – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!814.entry
    Classifique as respostas. O seu feedback é imprescindível
  • mercredi 18 novembre 2009 17:34Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Alexandre,

    Eu sei disso, mas queria entender o que o nosso amigo e de que forma o backup foi restaurado!!!!
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • mercredi 18 novembre 2009 17:35Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Eu já realizei este tipo de procedimento várias vezes, mas sempre exportando os dados para uma base de dados nova, evitando qualquer tipo de conflito e mantendo a atual funcionando.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • mercredi 18 novembre 2009 18:56Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    o problema éque quando e etou criando abae vazia,ela até cria, mas dá erro.
    Depois vou lá e importo os dados e aparentemente ele importa, nem da erros mas porem as informações não vão para a base.
    Nunca vi isso em minha vida.
    Estou criando a base com o mesmo nome, será que isso tem problema?
  • mercredi 18 novembre 2009 19:15Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Agora pra piorar, quando acabo de importar os dados, as informações vierão distorcidas.
    Por exemplo: O meu usuário no Sistema é o 41, Quando eu digito o usuário 41 no sistema el está puxando o usuário 12.
    A importção não preencheu os campos igual no banco antigo não.
    Acho que vou desistir desse banco.
    Vou alterar o sistema, acho que vai me dar menos trobalho, pois já perdi 4 dias nessa novela.
    de qualquer forma agradeço vocês pela atnção.
    Deus abençoe a todos.
  • jeudi 19 novembre 2009 12:52Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Criar base de dados com o nome de uma base já existente não vai dar certo, crie com outro nome.

    Em relação a importação dos dados qual o collation que você esta utilizando no SQL Server 2008?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • jeudi 19 novembre 2009 14:41Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Criei uma nova base com nome de new, a base antiga tinha o nome de Newcon_Teste, Sendo assim a base foi exportada com sucsso, depois renomeei a base new para Newcon_teste novamente, mas os dados vierão distorcidos, da mesma forma que citei anteriormente.
  • jeudi 19 novembre 2009 15:39Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Então, distorcidos como?

    O que esta de diferente?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • jeudi 19 novembre 2009 15:43Alexandre VM Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    Está parecendo que a "distorção" está sendo causada pelos IDs com autoincremento. Uma idéia seria tirar os autoincrementos dos IDs e fazer novamente a transferência.

    É uma tentativa.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
  • jeudi 19 novembre 2009 17:30Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     

    Por exemplo: Qundo vou entrar no sistema, tenho que digitar o número de meu usuário que é 41, se eu der um F8, aparece uma lista de usuários e seus respectivos números, quando seleciono, e digito 41 que é meu usuário e dou um enter para digitar a senha.
    O sistema me traz outro usuário e dá um erro de violação de tabela.
    Parece que o banco está sendo restaurado com os dados fora da ordem.
    O usuário 11 passou para o usuário 10 e assim é com todas informações de todas tabelas.
    muito estranho isso, nunca vi nada igual.

  • jeudi 19 novembre 2009 17:39Rogério Silva Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Mas como vou tirar o autoincremento, tem como tirar do banco já proto?
    Pode me explicar como?
  • jeudi 19 novembre 2009 18:25Junior Galvão - MVPMVP, ModérateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     
    Rogério,

    O autoincremente é uma opção configurada sobre suas tabelas e determinadas colunas, o que você deve fazer é verificar quais são as tabelas que possuem autoincremento e remover esta propriedade na coluna.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • jeudi 19 novembre 2009 19:04Alexandre VM Médailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateurMédailles de l'utilisateur
     Réponse proposéeA du code
    Rogério, 

    Olha, esse é um processo meio complicado de fazer... mas tive DUAS idéias, uma pode dar certo.
    Primeiro:

    Abra o Management Studio no 2008, clique com o botão direito sobre a database, selecione Tasks > Generate Scripts...
    Na tela que abrir:
    - Next na primeira tela
    - Certifique-se de ter selecionado a database na próxima e clique Next
    - Na tela Choose Script Options, altere:
    - "Script for Server Version" para "SQL Server 2000"
    - "Script USE DATABASE" para FALSE
    - "Script Data" para TRUE, e clique Next. 
    - Selecione "Tables" e Next
    - Select All, Next
    - Script to File, indique onde gravar o arquivo, e depois Next e Finish

    * Pode demorar um pouco pra gerar esse arquivo, depende do tamanho da sua database
    Leve este arquivo para o servidor 2000, abra o prompt (DOS) e execute:
    OSQL -E -i "arquivo gerado no 2008.sql" -d "nome da nova database"

    Ele vai rodar o script gerado no 2008.


    Minha outra idéia é um pouco mais complexa, mas pode funcionar, conforme segue:
    - Gerar um script dos objetos da database (somente objetos)
    - Criar uma nova database no SQL Server 2000
    - Criar os objetos com o script gerado
    - Criar um linked server no 2000 apontando para o 2008 (pode fazer pelo Enterprise Manager/Security/Linked Servers, ou por script: http://msdn.microsoft.com/en-us/library/aa259589(SQL.80).aspx e http://msdn.microsoft.com/en-us/library/aa259581(SQL.80).aspx)
    - Conectar nesta database nova e executar o script abaixo, que irá gerar um script de INSERT/SELECT, desativando o identity nas tabelas que tem ele:

    DECLARE @LS VARCHAR (100), -- SERVIDOR REMOTO
    		@DB VARCHAR (100), -- DATABASE REMOTA
    		@CLIST VARCHAR (4000), -- LISTA DE COLUNAS
    		@MIN INT, -- CONTADOR AUXILIAR
    		@MAX INT, -- CONTADOR AUXILIAR
    		@TBL VARCHAR (100) -- TABELA
    
    SET @LS = 'NOME DO LINKED SERVER' -- EX: SERVERREMOTO
    SET @DB = 'NOME DA DATABASE REMOTA' -- EX:DBREMOTA
    
    SET @LS = 'LS' -- EX: SERVERREMOTO
    SET @DB = 'DB' -- EX:DBREMOTA
    
    CREATE TABLE #TBLIST(ID INT IDENTITY (1,1), TBL VARCHAR (100))
    
    INSERT INTO #TBLIST (TBL)
    SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U'
    
    SELECT @MIN = MIN(ID), @MAX = MAX (ID) FROM #TBLIST
    
    WHILE @MIN <= @MAX
    BEGIN
    	SELECT @TBL = '[' + TBL + ']' FROM #TBLIST WHERE ID = @MIN
    	IF IDENT_SEED(@TBL) IS NOT NULL
    	BEGIN
    		PRINT 'SET IDENTITY_INSERT ' + @TBL + ' ON'
    		PRINT 'GO'
    	END
    	SET @CLIST = ''
    	SELECT @CLIST = @CLIST + '[' + NAME + '],' FROM SYSCOLUMNS WHERE ID = OBJECT_ID (@TBL)
    	SET @CLIST = LEFT (@CLIST, LEN (@CLIST)-1)
    	PRINT 'INSERT INTO ' + @TBL + '(' + @CLIST + ')'
    	PRINT 'SELECT ' + @CLIST + ' FROM ' + @LS + '.' + @DB + '..' + @TBL
    	PRINT 'GO'
    	IF IDENT_SEED(@TBL) IS NOT NULL
    	BEGIN
    		PRINT 'SET IDENTITY_INSERT ' + @TBL + ' OFF'
    		PRINT 'GO'
    	END
    	SET @MIN = @MIN + 1
    END
    DROP TABLE #TBLIST
    - Copiar o resultado gerado pelo script acima e executar, conectado na database nova

    Deu um pouco de trabalho pra criar o script. Mas pode funcionar.

    Sinceramente, não sei o que vai ser mais fácil, adaptar sua aplicação ou copiar os dados de volta.

    Abraço!!

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.