AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 61393
Accepted
M.Ali
M.Ali
Asked: 2014-03-21 13:08:32 +0800 CST2014-03-21 13:08:32 +0800 CST 2014-03-21 13:08:32 +0800 CST

在日志传送的辅助服务器上创建用户

  • 772

我有一个生产服务器说ServerA我已经设置了日志传送,ServerB它处于只读模式。此日志传送的目的是降低生产服务器上一些昂贵查询(痛苦报告)的负载。

现在,如果我必须使用我们的域帐户创建一些登录名。我不能这样做,因为辅助数据库位于standby mode.

我想如果我在主服务器上创建这些登录名,它将被复制到辅助服务器,然后日志会在那里恢复,但事实并非如此。

我在网上做了很多研究,找到了解决这个问题的方法。我为此找到了以下资源。我尝试了本文中建议的所有方法,但似乎都不起作用。

  1. Log Shipping in SQL Server 2008 R2 for set BI on replicated database

  2. How to transfer logins and passwords between instances of SQL Server

  3. Orphaned Users with Database Mirroring and Log Shipping

有人遇到过同样的问题吗?你做了什么?有没有办法解决这个问题?任何建议请任何指针。

sql-server sql-server-2008-r2
  • 1 1 个回答
  • 12146 Views

1 个回答

  • Voted
  1. Best Answer
    Simon Righarts
    2014-03-21T14:10:53+08:002014-03-21T14:10:53+08:00

    两种选择:

    • 在您的日志传送主服务器上,在该数据库中找到一个具有您想要的权限的用户(或创建一个)。如果您创建一个,那么日志传送将把它传输过来(因为这是一个数据库级对象)。然后,在主服务器上找到您想要的用户的 SID:select sid from sys.database_principals dp where type = 'S' and name = '<<YourUserNameHere>>'. (SID 基本上是一个唯一的 ID - 它完全不可读)然后,在辅助服务器上,使用指定的 SID 创建一个登录:CREATE LOGIN [<YourLoginNameHere>>] WITH PASSWORD ='<<YourPasswordHere>>', SID = <<the SID from primary server>>。通过指定 SID,该登录名将与您的登录数据库中的用户具有相同的 SID - 然后您应该能够登录该用户。
    • 在您的日志传送目的地创建一个具有服务器级权限(即系统管理员)的登录名。出于多种原因,这是一个非常糟糕的主意(特别是如果您在该服务器上有其他数据库)。

    创建用户的工作示例:我有一个名为 LogShippingTest 的数据库,我想在 logshipped 副本上的辅助服务器 db_datareader 上登录,以便 Marketing 可以读取内容。

    在主服务器上:

    USE [LogShippingTest];
    CREATE USER [DataReaderForMarketing] WITHOUT LOGIN;
    ALTER ROLE [db_datareader] ADD MEMBER [DataReaderForMarketing];
    SELECT sid FROM sys.database_principals dp WHERE type = 'S' AND name = 'DataReaderForMarketing'
    

    假设 SID 是 0x70DD0D59ADF3FD4ABB000037826A2888(我只是编造的,但我们将从那里开始)。现在,要么强制运行日志传送,要么等到它自己运行并且用户存在于辅助端。然后,在二级:

    USE [master];
    CREATE LOGIN [DataReaderForMarketing] WITH 
       PASSWORD = 'ThisIsAVerySecurePassword', 
       SID = 0x70DD0D59ADF3FD4ABB000037826A2888 
    

    然后,您应该能够在辅助服务器上以 DataReaderForMarketing 登录名登录,并在 logshipped 辅助数据库上拥有 db_datareader。(您可以更改主数据库用户的权限,他们也会登录以应用到辅助数据库!)

    • 14

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve