locked
Erro Restore RRS feed

  • Pergunta

  • Olá a todos,

     

    Tenho seguinte erro:

    Server: Msg 170, Level 15, State 1, Line 9
    Line 9: Incorrect syntax near '+'.

    Quando tento rodar a query:

    Code Snippet

    DECLARE @CAMINHO_BK VARCHAR(150), @NOME_BD VARCHAR(30)

     

    SET @CAMINHO_BK = 'C:\backup\backup_bd.BAK'
    SET @NOME_BD = 'MEU_BD'

     

    RESTORE DATABASE @NOME_BD
       FROM DISK = @CAMINHO_BK
    WITH RECOVERY,
       MOVE @NOME_BD + '_Data' TO 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Data.MDF',
       MOVE @NOME_BD + '_Log' TO 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Log.LDF

     

    Alguém sabe como corrigir?

     

    Valeu,

    terça-feira, 21 de outubro de 2008 13:17

Respostas

  • Boa Tarde Júlio,

     

    Infelizmente algumas aspas fazem toda a diferença.

    Faça um PRINT ao invés de um EXEC e verá que o comando está errado. Corrigindo as aspas o correto seria:

     

    Code Snippet

    DECLARE @CAMINHO_BK VARCHAR(150),

    @NOME_BD VARCHAR(30),

    @Comando VarChar(500)

     

    SET @CAMINHO_BK = 'C:\backup\backup_bd.BAK'

    SET @NOME_BD = 'MEU_BD'

     

    Set @Comando='RESTORE DATABASE ' + @NOME_BD+ '

    FROM DISK = ' + '''' + @CAMINHO_BK + '''' + '

    WITH RECOVERY,

    MOVE ' + '''' + @NOME_BD + '_Data' + '''' + ' TO ' + '''' + 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Data.MDF' + '''' + ',

    MOVE ' + '''' + @NOME_BD + '_Log' + '''' + ' TO ' + '''' + 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Log.LDF' + ''''

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 21 de outubro de 2008 18:00

Todas as Respostas

  • Júlio,

     

    Tente assim:

     

    Code Snippet

    DECLARE @CAMINHO_BK VARCHAR(150),

            @NOME_BD VARCHAR(30),

            @Comando VarChar(500)

     

    SET @CAMINHO_BK = 'C:\backup\backup_bd.BAK'

    SET @NOME_BD = 'MEU_BD'

     

    Set @Comando='RESTORE DATABASE @NOME_BD

    FROM DISK = @CAMINHO_BK

    WITH RECOVERY,

    MOVE '+ @NOME_BD + '_Data TO C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD +'_Data.MDF,

    MOVE' + @NOME_BD + '_Log TO C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Log.LDF'

     

    Exec(@Comando)

     

     

     

    terça-feira, 21 de outubro de 2008 13:57
    Moderador
  • Tá dando esse erro:

     

    Server: Msg 170, Level 15, State 1, Line 2
    Line 2: Incorrect syntax near 'C:'.
    Server: Msg 132, Level 15, State 1, Line 4
    The label 'C' has already been declared. Label names must be unique within a query batch or stored procedure.
    Server: Msg 132, Level 15, State 1, Line 5
    The label 'C' has already been declared. Label names must be unique within a query batch or stored procedure.

    terça-feira, 21 de outubro de 2008 14:57
  • Júlio,

     

    Veja assim:

     

    Code Snippet

    DECLARE @CAMINHO_BK VARCHAR(150),

       @NOME_BD VARCHAR(30),

       @Comando VarChar(500)

     

    SET @CAMINHO_BK = 'C:\backup\backup_bd.BAK'

    SET @NOME_BD = 'MEU_BD'

     

    Set @Comando='RESTORE DATABASE '+ @NOME_BD+'

    FROM DISK = ' +@CAMINHO_BK+'

    WITH RECOVERY,

    MOVE '+ @NOME_BD + '_Data TO C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD +'_Data.MDF,

    MOVE' + @NOME_BD + '_Log TO C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Log.LDF'

     

    Exec(@comando)

     

     

     

    terça-feira, 21 de outubro de 2008 15:18
    Moderador
  • Junior, continua o mesmo erro.

    terça-feira, 21 de outubro de 2008 15:57
  • Boa Tarde Júlio,

     

    Infelizmente algumas aspas fazem toda a diferença.

    Faça um PRINT ao invés de um EXEC e verá que o comando está errado. Corrigindo as aspas o correto seria:

     

    Code Snippet

    DECLARE @CAMINHO_BK VARCHAR(150),

    @NOME_BD VARCHAR(30),

    @Comando VarChar(500)

     

    SET @CAMINHO_BK = 'C:\backup\backup_bd.BAK'

    SET @NOME_BD = 'MEU_BD'

     

    Set @Comando='RESTORE DATABASE ' + @NOME_BD+ '

    FROM DISK = ' + '''' + @CAMINHO_BK + '''' + '

    WITH RECOVERY,

    MOVE ' + '''' + @NOME_BD + '_Data' + '''' + ' TO ' + '''' + 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Data.MDF' + '''' + ',

    MOVE ' + '''' + @NOME_BD + '_Log' + '''' + ' TO ' + '''' + 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Data\' + @NOME_BD + '_Log.LDF' + ''''

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 21 de outubro de 2008 18:00
  • Gustavo, deu certo, funcionou, obrigado

    Junior obrigado pela ajuda.

     

    Abraço a todos.

    terça-feira, 21 de outubro de 2008 19:17