none
Backup Login RRS feed

  • Pergunta

  • Olá  Senhores,

    Gostaria de saber se quando realizo o bkp/restore de um determinado banco para uma nova instancia, os logins associados ao referido banco são criados automaticamente e suas respectivas senhas também são mantidas?

    Caso contrario, como faço para realizar o BKP/Restore de um determinado usuário mantendo suas permissões/senha?

    segunda-feira, 5 de janeiro de 2015 12:08

Respostas

  • Olá,

         Existe um KB da Microsoft que gera todos os logins em um formato texto para que você possa recriar aqueles que desejar com a mesma senha. Acho que seria interessante você dar uma olhada. Depois de ter recriado os logins, você ainda precisará fazer o processo recomendado pelo Durval para "linkar" os usuários órfãos da sua base.

    http://support.microsoft.com/kb/918992/pt-br


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 5 de janeiro de 2015 19:57
    Moderador
  • Execute o script abaixo antes de migrar o banco de dados, na instância origem e em seguida na instância destino. 

    Pelo fato de manter o mesmo SID, você não terá problemas com usuários orfãos na sua base.

    SELECT  '
    CREATE LOGIN ' + name + ' WITH PASSWORD = '
            + CONVERT(VARCHAR(MAX), password_hash, 1) + ' HASHED,SID = '
            + CONVERT(VARCHAR(MAX), sid, 1) + ' ,CHECK_POLICY = '
            + CASE is_policy_checked
                WHEN 1 THEN 'ON'
                ELSE 'OFF'
              END + ', ' + ' CHECK_EXPIRATION = ' + CASE is_expiration_checked
                                                      WHEN 1 THEN '''ON'''
                                                      ELSE '''OFF'''
                                                    END + ', '
            + ' DEFAULT_DATABASE = ' + default_database_name
            + ' ,DEFAULT_LANGUAGE = ' + default_language_name
    FROM    sys.sql_logins
    WHERE name in ( 'login1','login2','login3')


    quinta-feira, 8 de janeiro de 2015 18:18
  • Olá,

    Os usuários do seu database são mantidos quando você faz um restore, porém se esse backup é de outra instância com outros logins, os usuários ficam órfãos.

    Nesse caso você deverá recriar os logins na instância onde está efetuando o restore e depois deve associar esses novos logins aos usuários que estão no database.

    USE Database
    GO
    
    ALTER USER xxxxx WITH LOGIN = xxx


    Esse link também pode te ajudar.

    http://msdn.microsoft.com/pt-br/library/ms175475.aspx

    Espero ter ajudado.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 5 de janeiro de 2015 12:54
  • FDSilva6,

    Não, quando você realiza um BACKUP de um banco de dados, apenas às referências de "users" são vinculadas, mas o "login" (que é vinculado à instância SQL) não é obtido junto com seu banco de dados.

    Você poderá obter um backup dos Logins:

    - gerando o script do "login" (No SSMS, acesse a pasta Security -> Logins. Com botão direito selecione "Script Login As" -> "CREATE to..."). A senha aparecerá "criptografada", utilize a procedure "sp_help_revlogin" recomendada no KB abaixo:

    https://support.microsoft.com/kb/246133/pt-br
    Para vincular novamente o "login" da instância SQL com o "user" do banco de dados, utilize a procedure "" como indicado no BOL ( http://msdn.microsoft.com/pt-br/library/ms174378.aspx ), segue um script abaixo para você adaptar à sua necessidade:

    USE SeuBanco
    GO
    
    EXEC sp_change_users_login 'Update_One', 'SeuUser', 'SeuLogin'
    GO

    - Realizando o BACKUP do banco de dados "master";

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms187837.aspx

    http://msdn.microsoft.com/pt-br/library/ms190190.aspx

    http://technet.microsoft.com/pt-br/library/ms190679(v=sql.110).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 5 de janeiro de 2015 13:21

Todas as Respostas

  • Olá,

    Os usuários do seu database são mantidos quando você faz um restore, porém se esse backup é de outra instância com outros logins, os usuários ficam órfãos.

    Nesse caso você deverá recriar os logins na instância onde está efetuando o restore e depois deve associar esses novos logins aos usuários que estão no database.

    USE Database
    GO
    
    ALTER USER xxxxx WITH LOGIN = xxx


    Esse link também pode te ajudar.

    http://msdn.microsoft.com/pt-br/library/ms175475.aspx

    Espero ter ajudado.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 5 de janeiro de 2015 12:54
  • FDSilva6,

    Não, quando você realiza um BACKUP de um banco de dados, apenas às referências de "users" são vinculadas, mas o "login" (que é vinculado à instância SQL) não é obtido junto com seu banco de dados.

    Você poderá obter um backup dos Logins:

    - gerando o script do "login" (No SSMS, acesse a pasta Security -> Logins. Com botão direito selecione "Script Login As" -> "CREATE to..."). A senha aparecerá "criptografada", utilize a procedure "sp_help_revlogin" recomendada no KB abaixo:

    https://support.microsoft.com/kb/246133/pt-br
    Para vincular novamente o "login" da instância SQL com o "user" do banco de dados, utilize a procedure "" como indicado no BOL ( http://msdn.microsoft.com/pt-br/library/ms174378.aspx ), segue um script abaixo para você adaptar à sua necessidade:

    USE SeuBanco
    GO
    
    EXEC sp_change_users_login 'Update_One', 'SeuUser', 'SeuLogin'
    GO

    - Realizando o BACKUP do banco de dados "master";

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms187837.aspx

    http://msdn.microsoft.com/pt-br/library/ms190190.aspx

    http://technet.microsoft.com/pt-br/library/ms190679(v=sql.110).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 5 de janeiro de 2015 13:21
  • Olá,

         Existe um KB da Microsoft que gera todos os logins em um formato texto para que você possa recriar aqueles que desejar com a mesma senha. Acho que seria interessante você dar uma olhada. Depois de ter recriado os logins, você ainda precisará fazer o processo recomendado pelo Durval para "linkar" os usuários órfãos da sua base.

    http://support.microsoft.com/kb/918992/pt-br


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 5 de janeiro de 2015 19:57
    Moderador
  • Execute o script abaixo antes de migrar o banco de dados, na instância origem e em seguida na instância destino. 

    Pelo fato de manter o mesmo SID, você não terá problemas com usuários orfãos na sua base.

    SELECT  '
    CREATE LOGIN ' + name + ' WITH PASSWORD = '
            + CONVERT(VARCHAR(MAX), password_hash, 1) + ' HASHED,SID = '
            + CONVERT(VARCHAR(MAX), sid, 1) + ' ,CHECK_POLICY = '
            + CASE is_policy_checked
                WHEN 1 THEN 'ON'
                ELSE 'OFF'
              END + ', ' + ' CHECK_EXPIRATION = ' + CASE is_expiration_checked
                                                      WHEN 1 THEN '''ON'''
                                                      ELSE '''OFF'''
                                                    END + ', '
            + ' DEFAULT_DATABASE = ' + default_database_name
            + ' ,DEFAULT_LANGUAGE = ' + default_language_name
    FROM    sys.sql_logins
    WHERE name in ( 'login1','login2','login3')


    quinta-feira, 8 de janeiro de 2015 18:18