我有一个生产服务器说ServerA
我已经设置了日志传送,ServerB
它处于只读模式。此日志传送的目的是降低生产服务器上一些昂贵查询(痛苦报告)的负载。
现在,如果我必须使用我们的域帐户创建一些登录名。我不能这样做,因为辅助数据库位于standby mode
.
我想如果我在主服务器上创建这些登录名,它将被复制到辅助服务器,然后日志会在那里恢复,但事实并非如此。
我在网上做了很多研究,找到了解决这个问题的方法。我为此找到了以下资源。我尝试了本文中建议的所有方法,但似乎都不起作用。
Log Shipping in SQL Server 2008 R2 for set BI on replicated database
How to transfer logins and passwords between instances of SQL Server
有人遇到过同样的问题吗?你做了什么?有没有办法解决这个问题?任何建议请任何指针。
两种选择:
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 可以读取内容。
在主服务器上:
假设 SID 是 0x70DD0D59ADF3FD4ABB000037826A2888(我只是编造的,但我们将从那里开始)。现在,要么强制运行日志传送,要么等到它自己运行并且用户存在于辅助端。然后,在二级:
然后,您应该能够在辅助服务器上以 DataReaderForMarketing 登录名登录,并在 logshipped 辅助数据库上拥有 db_datareader。(您可以更改主数据库用户的权限,他们也会登录以应用到辅助数据库!)