none
SQL 2008R2 - troca de servidor RRS feed

  • Pergunta

  • Srs, Irei realizar a troca física do meu servidor SQL, irei utilizar a mesma versão do SQL no novo servidor somente o windows que será atualizado do 2008 para 2012,  alguem tem um passo-a-passo da melhor maneira de fazer isso? Minha ideia inicial é montar o novo servidor com as mesmas estruturas de pastas de instalação do SQL, fazer o restore do master e msdb primeiramente para restaurar as configurações/usuarios/permissoes/jobs, apos isso o restore de cada base. 

    att,


    Fabiano Pires

    terça-feira, 4 de outubro de 2016 11:11

Respostas

  • Fabiano,

    O backup do Master e MSDB são importantes quando você deseja restaurar o SQL Server no mesmo ambiente e principalmente para mesma configuração de SQL Server.

    Em relação a script, acredito que este poderá te ajudar:

    SELECT
     'CREATE LOGIN ' + QUOTENAME(NAME) +
     CASE
      WHEN TYPE_DESC LIKE 'WINDOWS%' THEN ' FROM WINDOWS'
     ELSE ' WITH PASSWORD = ' + 
      SYS.FN_VarBinToHexStr(CAST(LOGINPROPERTY(NAME,'PasswordHash') As VARBINARY(MAX))) + ' HASHED' +
      ' , SID = ' + SYS.FN_VarBinToHexStr(CAST(SID As VARBINARY(MAX))) + ' , '
     END +
     
     CASE
      WHEN TYPE_DESC LIKE 'WINDOWS%' THEN ' WITH '
     ELSE '' END +
     
     'DEFAULT_DATABASE = ' + default_database_name + ', ' + 
        'DEFAULT_LANGUAGE = ' + default_language_name
    FROM SYS.server_principals
    WHERE TYPE_DESC IN ('SQL_LOGIN','WINDOWS_LOGIN','WINDOWS_GROUP')
    Já utilizei para migrar logins de 2005 para 2008, de 2008 para 2008 e funcionou muito bem. Infelizmente para o 2000 não é tão simples, mas dá pra fazer também.
     
    A parte de privilégios pode ser montada programaticamente também com o script abaixo:
     
    SELECT state_desc + ' ' + permission_name + ' TO ' +
    QUOTENAME(Name) COLLATE Latin1_General_CI_AS_KS_WS,
    p.permission_name,
    p.state_desc, s.name
    FROM sys.server_permissions p
    INNER JOIN sys.server_principals s ON
    p.grantee_principal_id = s.principal_id
    


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Fabiano Pires quinta-feira, 13 de outubro de 2016 13:59
    terça-feira, 4 de outubro de 2016 15:03
    Moderador

Todas as Respostas

  • Fabiano,

    O primeiro passo é realizar toda instalação e configuração do Windows e SQL Server, posteriormente realizar a migração dos seus logins e usuários, depois começar a realizar os backups dos bancos de dados no servidor antigo e restauração no servidor novo.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Sugerido como Resposta Ruberlei terça-feira, 4 de outubro de 2016 14:58
    terça-feira, 4 de outubro de 2016 14:56
    Moderador
  • Então não tem necessidade de fazer restore do banco master correto?  existe algum script para exportar os logins e usuários com suas senhas?

    Fabiano Pires

    terça-feira, 4 de outubro de 2016 14:59
  • Fabiano,

    O backup do Master e MSDB são importantes quando você deseja restaurar o SQL Server no mesmo ambiente e principalmente para mesma configuração de SQL Server.

    Em relação a script, acredito que este poderá te ajudar:

    SELECT
     'CREATE LOGIN ' + QUOTENAME(NAME) +
     CASE
      WHEN TYPE_DESC LIKE 'WINDOWS%' THEN ' FROM WINDOWS'
     ELSE ' WITH PASSWORD = ' + 
      SYS.FN_VarBinToHexStr(CAST(LOGINPROPERTY(NAME,'PasswordHash') As VARBINARY(MAX))) + ' HASHED' +
      ' , SID = ' + SYS.FN_VarBinToHexStr(CAST(SID As VARBINARY(MAX))) + ' , '
     END +
     
     CASE
      WHEN TYPE_DESC LIKE 'WINDOWS%' THEN ' WITH '
     ELSE '' END +
     
     'DEFAULT_DATABASE = ' + default_database_name + ', ' + 
        'DEFAULT_LANGUAGE = ' + default_language_name
    FROM SYS.server_principals
    WHERE TYPE_DESC IN ('SQL_LOGIN','WINDOWS_LOGIN','WINDOWS_GROUP')
    Já utilizei para migrar logins de 2005 para 2008, de 2008 para 2008 e funcionou muito bem. Infelizmente para o 2000 não é tão simples, mas dá pra fazer também.
     
    A parte de privilégios pode ser montada programaticamente também com o script abaixo:
     
    SELECT state_desc + ' ' + permission_name + ' TO ' +
    QUOTENAME(Name) COLLATE Latin1_General_CI_AS_KS_WS,
    p.permission_name,
    p.state_desc, s.name
    FROM sys.server_permissions p
    INNER JOIN sys.server_principals s ON
    p.grantee_principal_id = s.principal_id
    


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Fabiano Pires quinta-feira, 13 de outubro de 2016 13:59
    terça-feira, 4 de outubro de 2016 15:03
    Moderador
  • Deleted
    terça-feira, 4 de outubro de 2016 15:47
  • Irei realizar testes,   na verdade irei utilizar o mesmo ambiente apenas trocar o servidor fisico,  a ideia é manter até o mesmo nome do servidor parar nao precisar alterar strings de conexão em varios sistemas.

    Fabiano Pires

    terça-feira, 4 de outubro de 2016 19:45
  • legal, vou testar essa solução tambem e informo se deu certo.

    Fabiano Pires

    terça-feira, 4 de outubro de 2016 19:45
  • Nesse caso no meu ambiente nao rodou, tentei como a documentação mas não deu certo, com o script do Junior foi facilmente.

    obrigado.


    Fabiano Pires

    quinta-feira, 13 de outubro de 2016 14:00