AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 219354
Accepted
Craig Efrein
Craig Efrein
Asked: 2018-10-06 04:18:04 +0800 CST2018-10-06 04:18:04 +0800 CST 2018-10-06 04:18:04 +0800 CST

sp_help_revlogin para usuários de banco de dados independente?

  • 772

Estou usando sp_help_revlogin há muito tempo para transferir entidades de servidor de uma instância SQL para outra.

Existe um equivalente sp_help_revlogin que pode gerar scripts de criação para usuários de banco de dados parcialmente independentes? Entendo que, se eu fizer backup/restaurar o usuário independente, mas preciso implantar usuários de um banco de dados independente para outro banco de dados independente diferente.

sql-server contained-database
  • 1 1 respostas
  • 544 Views

1 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2018-10-06T05:22:41+08:002018-10-06T05:22:41+08:00

    Embora David esteja certo, o usuário independente virá automaticamente junto com o banco de dados independente se você fizer backup/restaurar para outro local (esse é o ponto), posso ver alguns casos de uso para isso, como criar o mesmo usuário independente em um conjunto de bancos de dados, com a mesma senha, sem precisar saber (ou alterar) a senha. Ou implantar o mesmo usuário que foi criado nos ambientes dev/QA/test/staging para a cópia de produção do banco de dados, sem mover o banco de dados.

    Se você souber (ou puder alterar) a senha, é claro, criar scripts de todos os usuários contidos em um banco de dados é bastante simples, basta pegar essa saída e substituir whateverpela senha desejada para cada usuário contido:

    SELECT N'CREATE USER ' + QUOTENAME(name) 
      + N' WITH PASSWORD = N''whatever'';'
    FROM sys.database_principals
    WHERE authentication_type_desc = N'DATABASE';
    

    Se o requisito é que você não saiba a senha, porém, é um pouco mais complexo. Baseado principalmente neste post de Argenis Fernandez (que atualmente não é muito ágil):

    1. Primeiro, certifique-se de que não haja um login no nível do servidor com o mesmo nome do usuário contido.
    2. Conecte-se à instância usando a conexão de administrador dedicada (consulte esta postagem para obter as etapas de solução de problemas, se não conseguir).
    3. Alterne o contexto para o banco de dados independente em que seu usuário existente reside. Eu vou assumir que o usuário contido é chamado bob.
    4. Execute o seguinte:

      USE OldContainedDatabase;
      GO
      
      DECLARE @sql nvarchar(max);
      
      SELECT @sql = N'CREATE LOGIN ' + QUOTENAME(name) 
        + N' WITH PASSWORD = ' + CONVERT(varchar(256), password, 1) 
        + N' HASHED;'
      FROM sys.sysowners 
      WHERE name = N'bob';
      
      -- if the target contained database is on the same server:
      EXEC sys.sp_executesql @sql;
      
      -- otherwise:
      SELECT @sql; -- run this output on the target server
      
    5. Conecte-se ao banco de dados independente de destino (não precisa mais do DAC), crie o usuário a partir do logon no nível do servidor, migre esse usuário para um usuário independente e elimine o logon:

      USE NewContainedDatabase;
      GO
      
      CREATE USER [bob] FROM LOGIN [bob];
      GO
      
      EXEC sys.sp_migrate_user_to_contained 
        @username     = N'bob', 
        @rename       = N'keep_name', 
        @disablelogin = N'disable_login'; 
      GO
      
      DROP LOGIN [bob];
      

    Acabei de testar isso na minha máquina e consegui fazer login nos dois bancos de dados explicitamente usando o mesmo nome de usuário e senha, mas os usuários poderiam fazer o mesmo, mesmo que eu não soubesse sua senha durante todo esse processo.

    • 4

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve