none
transferir usuário instância RRS feed

Respostas

  • Neibala,

    Já utilizei este comando para realizar migração de logins até a versão 2012 do SQL Server, nas minhas necessidades funcionou bem, mas veja se este outro aqui te ajuda:

    -- Migrando usuários e permissões --
    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
    
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta neibala sexta-feira, 24 de abril de 2020 14:33
    quinta-feira, 9 de abril de 2020 23:43

Todas as Respostas

  • Neibala,

    Já utilizei este comando para realizar migração de logins até a versão 2012 do SQL Server, nas minhas necessidades funcionou bem, mas veja se este outro aqui te ajuda:

    -- Migrando usuários e permissões --
    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
    
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta neibala sexta-feira, 24 de abril de 2020 14:33
    quinta-feira, 9 de abril de 2020 23:43
  • Junior Galvão / Grupo

         Veja está situação:

       - Se eu tenho um usuário com permissão de somente leitura em 5 bancos de dados, onde defini isto pelo menu raiz do SQL Server, como eu conseguiria pegar essas permissões, através de script, pois assim estaria aplicando em um outro Servidor essas permissões ?

    sábado, 11 de abril de 2020 22:17
  • Neibala,

    Com certeza através de scripts, inclusive o exemplo que eu publiquei faz justamente isso!!!

    Acredito que você não tenha testado.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 11 de abril de 2020 22:38
  • Junior Galvão / Grupo

        Acredito que você comentou realmente possa até estar funcionando, só que acredito que eu esteja executado de forma incorreta ou no local incorreto, pois veja, eu executando pelo Management Studio ( gerando script ) veja o que está ocorrendo e de repente você vendo assim saberá o que realmente pode estar acontecendo no momento.

    - Em Security
      - Logins
    
    - View
      - Object Explorer Details
    
        Ele gera o script do usuário, só que eu precisaria, do script que defini ele 
    como ( DEFAULT_SCHEMA=[dbo] ), que está definir no menu raiz do SQL Server.
        Pois se eu fizer uma simulação da execução da liberação de um perfil assim pelo menu raiz
     do SQL Server  e não mandar executar e pedir para ele gerar o script tenho o script abaixo.
    
        Então eu conseguiria através do Management Studio ou através de script gerar está parte que está me
     faltando ?
    
    
    USE [db_base_teste]
    GO
    CREATE USER [user_base] FOR LOGIN [user_base]
    GO
    USE [db_base_teste]
    GO
    ALTER USER [user_base] WITH DEFAULT_SCHEMA=[dbo]
    GO
    USE [db_base_teste]
    GO
    ALTER ROLE [db_datareader] ADD MEMBER [user_base]
    GO
    
    Veja se assim ficou um pouco mais claro a minha dúvida.

    terça-feira, 14 de abril de 2020 16:40
  • Junior Galvão / Grupo

        Acredito que você comentou realmente possa até estar funcionando, só que acredito que eu esteja executado de forma incorreta ou no local incorreto, pois veja, eu executando pelo Management Studio ( gerando script ) veja o que está ocorrendo e de repente você vendo assim saberá o que realmente pode estar acontecendo no momento.

    - Em Security
      - Logins
    
    - View
      - Object Explorer Details
    
        Ele gera o script do usuário, só que eu precisaria, do script que defini ele 
    como ( DEFAULT_SCHEMA=[dbo] ), que está definir no menu raiz do SQL Server.
        Pois se eu fizer uma simulação da execução da liberação de um perfil assim pelo menu raiz
     do SQL Server  e não mandar executar e pedir para ele gerar o script tenho o script abaixo.
    
        Então eu conseguiria através do Management Studio ou através de script gerar está parte que está me
     faltando ?
    
    
    USE [db_base_teste]
    GO
    CREATE USER [user_base] FOR LOGIN [user_base]
    GO
    USE [db_base_teste]
    GO
    ALTER USER [user_base] WITH DEFAULT_SCHEMA=[dbo]
    GO
    USE [db_base_teste]
    GO
    ALTER ROLE [db_datareader] ADD MEMBER [user_base]
    GO
    
    Veja se assim ficou um pouco mais claro a minha dúvida.

    Neibala,

    Sim você conseguiria até mesmo através da ferramenta SSDT utilizando o componente Migrate User.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 14 de abril de 2020 23:34
  •    Junior Galvão / Grupo

         Agradeço toda a sua atenção neste assunto e até mesmo está outra indicação.

          E identifiquei que o problema maior no meu caso estava ligado a sincronização dos usuários com os bancos de dados, pois ter feito o restore.

         E com todas as dicas o meu problema foi resolvido.

    sexta-feira, 24 de abril de 2020 14:33