M.A*_*Ali 7 sql-server sql-server-2008-r2 log-shipping
我有一个生产服务器说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
有人遇到过同样的问题吗?你做了什么?有没有办法解决这个问题?任何建议请任何指针。
Sim*_*rts 14
两种选择:
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 的数据库,我想在我的辅助服务器 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'
Run Code Online (Sandbox Code Playgroud)
假设 SID 是 0x70DD0D59ADF3FD4ABB000037826A2888(我只是编造的,但我们将从那里开始)。现在,要么强制运行日志传送,要么等待它自行运行并且用户存在于辅助端。然后,在辅助上:
USE [master];
CREATE LOGIN [DataReaderForMarketing] WITH
PASSWORD = 'ThisIsAVerySecurePassword',
SID = 0x70DD0D59ADF3FD4ABB000037826A2888
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够在辅助服务器上以 DataReaderForMarketing 登录名登录,并在已登录的辅助数据库上拥有 db_datareader。(您可以更改主数据库用户的权限,他们也会登录以应用于辅助数据库!)
归档时间: |
|
查看次数: |
11483 次 |
最近记录: |