none
Restore no Sql Server + Visual Studio 2012. RRS feed

  • Pergunta

  • Amigos, boa tarde.

    Preciso criar um procedimento de restore (Restauração) pro meu banco de dados. Estou usando Visual Studio 2012 e Sql Server Express 2012. 

    ao enviar o comando seguinte ao banco: 

    -----

                    string sql = @"RESTORE DATABASE " + datasource + " FROM DISK = '" + nome + "'";
                    conexao.executeNonQuery(sql, "@datasource", datasource, "@nome", nome);

    ----

    o visual me retorna o seguinte erro: RESTORE não pode processar o banco de dados 'SISJUR' porque está sendo usado por esta sessão. Recomendamos que o banco de dados mestre seja usado ao executar esta operação. RESTORE DATABASE está sendo encerrado de forma anormal.

    ---

    O que acontece é que preciso usar um outro banco, tipo o banco Master, ou o northwind e ainda pra ficar bonito, matar todas as sessões. Porém... eu não sei fazer isso com o código. O código q preciso eu encontrei ele nesse link ( https://social.msdn.microsoft.com/Forums/pt-BR/53269fe9-6b28-4065-8799-930f02a10acd/restore-com-vb6-via-sql-server-2005-express?forum=520 ) do proprio forum, mas nao entendi como colocá-lo no meu codigo.

    Por favor, alguém poderia me ajudar? Muito obrigado!!!!

    --------------------------

    Code Block

    USE [master]

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    CREATE PROCEDURE [dbo].[RestoreDados]

    @Caminho varchar(1000)

    AS

    BEGIN

    DECLARE @SQL VARCHAR (4000)

    SET NOCOUNT ON;

    -- Montagem da instrução kill das sessões abertas

    SELECT @SQL = ISNULL (@SQL, '') + 'KILL ' + CONVERT (VARCHAR(10), p.spid) + '

    '

    FROM sys.sysprocesses p

    INNER JOIN sys.databases db ON p.dbid = db.database_id

    WHERE db.name = 'BDST'

    -- executa kill

    EXEC (@SQL)

    -- faz o restore

    RESTORE DATABASE BDST FROM DISK = @Caminho

    WITH

    RECOVERY,

    REPLACE,

    FILE = 1,

    STATS = 10

    END

    sexta-feira, 29 de maio de 2015 18:04

Respostas

  • Amigos, bom dia. Consegui fazer

    o codigo ficou assim: 

                    sql = "USE [MASTER];";
                    sql += "Alter Database " + cmbDataBases.Text + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";
                    sql += "RESTORE DATABASE "+ cmbDataBases.Text+" FROM DISK = '"+txtRestoreLoc.Text+"' WITH REPLACE;";

    com direito a injeção de sql e tudo mais rs

    vlw, falow

    • Marcado como Resposta DiFurlan segunda-feira, 1 de junho de 2015 13:18
    segunda-feira, 1 de junho de 2015 13:01

Todas as Respostas

  • Bom dia,

    Alguém tem as manhas de fazer um restore no banco?

    Valeu

    sábado, 30 de maio de 2015 12:20
  • Amigos, bom dia. Consegui fazer

    o codigo ficou assim: 

                    sql = "USE [MASTER];";
                    sql += "Alter Database " + cmbDataBases.Text + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";
                    sql += "RESTORE DATABASE "+ cmbDataBases.Text+" FROM DISK = '"+txtRestoreLoc.Text+"' WITH REPLACE;";

    com direito a injeção de sql e tudo mais rs

    vlw, falow

    • Marcado como Resposta DiFurlan segunda-feira, 1 de junho de 2015 13:18
    segunda-feira, 1 de junho de 2015 13:01