none
Aplicação não conecta ao SQL Server 2005 - usuários com problema? RRS feed

  • Pergunta

  • Pessoal,

     

    Tinha um Servidor Windows 2000 Server com SQL 2000 isntalado, acontece que o HD foi pro pau, mas consegui salvar os arquivos do database que me interessava.

     

    Instalei o Windows 2003 Server Standard e o SQL 2005, fiz o attach database conforme o figurino e tentei conectar a aplicação ao database, contudo a aplicãção reclama que não encontra o database.

     

    Pesquisando pela net vi que quando é feito uma attach database no SQL 2005 os nomes de usuários do database não se vinculam automaticamente aos usuários do database master do SQL, isso por si já seria um problema para a aplicação.

     

    Tentei visualizar os logs de arquivos que ficam na pasta da aplicação (vários arquivos com a extensão TRN mas não encontrei nenhuma aplicação no qual pudesse ler estes arquivos, o curioso é que todas as vezes que tento me conectar pela aplicação ao database do SQL ele gera mais um log, talvez se eu visualizasse esse log, teria alguma pista do que fazer para minha aplicação rodar.

     

    Alguém já teve problemas semelhantes assim? pode me ajudar?

     

    Abraços!

    sábado, 30 de junho de 2007 12:25

Todas as Respostas

  •  

    Alex,

     

    Voce vai precisar fazer um restore do database Master.mdf.  Eu seguiria o seguinte roteiro:

     

    1)  Backup de todos os databases de usuário e msdb;

    2) Drop database em todos os databases de usuários;

    3) Restaurar a partir de um backup, o master.mdf;

    4) restore do msdb e dos databases de usuários.

     

    O grande macete é o restore do master.mdf que tem de ser feito da seguinte forma:

     

    1) sqlserv.exe -c -m

    2) restore database master from <backup-master>

     

     

     

     

    domingo, 1 de julho de 2007 12:02
  • Alexandre, esse procedimento não seria aplicado caso as versões do SQL Server fossem iguais?

     

    Pois, ele reinstalou na versão 2005 e a master antiga está no SQL Server 2000.

     

    Uma solução seria instalar uma instância do SQL Server 2000 neste ou em outro servidor e proceder com o restore da Master e em seguida fazer a cópia dos logins.

     

    Você não acha que seria o mais recomendável?

     

     

    Abraços,

    segunda-feira, 2 de julho de 2007 14:17
  • Olá Alex,

     

    Na verdade o que ocorre é que quando vc restaura ou faz um attach em um db ele não associa os usuários existentes na base de dados com seus respectivos logins, costuma-se dizer que os usuários ficaram órfãos. Isso só ocorre quando o restore ou attach é feito no mesmo servidor.

     

    No seu caso o primeiro passo a fazer seria recriar os logins que existiam no servidor antigo, depois, após fazer o attach vc pode:

    1. Excluir e recriar os usuários dentro do db, associando os usuários com os novos logins

     

    ou

     

    2. Usar a procedure sp_change_users_login para reassociar os logins com os usuários que já existe nas bases

     

    Em meu site vc encontra um script que faz esta reassociação de forma automática. Acesse a área de Script do site e faça uma pesquisa por órfãos

     

    um abraço

    Nilton Pinheiro

    www.mcdbabrasil.combr

     

    PS: Foi útil para vc? Então marque o psot como útil!!

     

     

    terça-feira, 3 de julho de 2007 00:44
    Moderador
  • Alex,

     

    Você terá que refazer o mapeamento do usuário em relação ao banco de dados que ele possue permissão, para isso faça o seguinte, veja este exemplo extraído do books on-line do SQL Server, utilizando a stored procedure sp_change_users_login.

     

    --Create the new login.
      CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
      GO
     

    --Map database user MB-Sales to login MaryB.
      USE AdventureWorks;
      GO
     

    EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
      GO

    terça-feira, 3 de julho de 2007 12:32
    Moderador