locked
Bloquear Banco SQL 2005 RRS feed

  • Pergunta

  • Pessoal, boa tarde

     

    Eu tenho  um banco no SQL2005 e eu gostaria de rodar uma procedure nesse banco, mas para isso não poderia ter nenhum usuário conectado ou conectar na base durante esse processo.

     

    Existe alguma forma no SQL 2005 (opção) para marcar e bloquear o banco do acesso dos usuário enquanto a "manutenção" e executada?.

     

    Agradeço o apoio de todos

     

     

    segunda-feira, 8 de setembro de 2008 20:09

Todas as Respostas

  • DuoCore , boa noite

     

    Você pode programar uma DTS para fazer isso ou uma trigger mesmo.

    Tirando isso não posso te ajudar. Aguarde outra ajuda para tomar sua decisão. Boa sorte

     

    terça-feira, 9 de setembro de 2008 01:21
  • Bom Dia,

     

    Você pode transformar o banco de multiusuário para monousuário e assim rodar a sua procedure. Se alguém tentar conectar (mesmo que seja administrador, owner, etc) será impedido. Naturalmente que se alguém, com as devidas permissões, quiser eliminá-lo (KILL) poderá acessar o banco e é preciso advertir os outros administradores que você estará utilizando o banco.

     

    Lembre-se que um banco monousuário só aceita uma conexão, então mesmo que você queira utilizá-lo, se outra pessoa conectar (ou se você estiver com o New Query aberto e o Managament Studio, ou seja, 2 conexões), você será bloqueado.

     

    Aconselho realizar tudo via linha de comando, conforme scripts abaixo:

     

    Code Snippet

    -- Muda o contexto de banco de dados

    USE MASTER;

     

    -- Coloca o banco Monousuário derrubando todas as conexões

    ALTER DATABASE Banco SET SINGLE_USER WITH ROLLBACK IMMEDIATE

     

    -- Muda o contexto de banco de dados

    USE BANCO;

     

    -- Executa a procedure que necessita do banco monousuário

    EXEC suaSP @Parametro = 'Valor'

     

    -- Muda o contexto de banco de dados

    USE MASTER;

     

    -- Coloca o banco multiusuário derrubando alguma conexão (se houver)

    ALTER DATABASE Banco SET MULTI_USER WITH ROLLBACK IMMEDIATE

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 9 de setembro de 2008 12:20
  • Duo,

     

    O procedimento que o Gustavo indicou com certeza vai te ajudar em muito o importante é você estabelecer uma maneira para trabalhar com este script, não afetando as suas conexões!!!

    terça-feira, 9 de setembro de 2008 13:02
  • Muito obrigado a todos, resolveu meu problema!!!!!

     

     

     

    terça-feira, 9 de setembro de 2008 14:43
  • Olá,

     

    Se puder classifique.

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 9 de setembro de 2008 20:49