我的生产应用程序有一个高级P2 SQL Azure数据库,出于安全原因,我创建了特定于数据库的架构/视图/角色和特定的数据库用户帐户,用于从SSRS查询中读取数据。
让我们只调用服务器PRIMARY
和我的数据库MyApp
下面是此操作的安装脚本。
-- On Primary Master
CREATE LOGIN ssrsuser WITH password='******'
-- On Primary MyApp
CREATE USER ssrsuser FOR LOGIN ssrsuser
CREATE ROLE [ssrsreader] AUTHORIZATION [db_owner]
GRANT SELECT ON SCHEMA :: [App] TO [ssrsreader]
GRANT SELECT ON SCHEMA :: [Reports] TO [ssrsreader]
EXEC sp_addrolemember 'ssrsreader', 'ssrsuser'
因此,我们的用户在Prod DB上加载了大量负载,我们决定是时候将报告功能转移到辅助同步的从属数据库了。
由于我们使用的是SQL Azure高级层,因此我们可以使用只读辅助副本启用Active Geo复制。事实上,MS甚至说它适用于只读工作负载,如报告。
因此,我已经设置了SECONDARY
服务器,启用了种子设定,现在已经完成,我可以使用SECONDARY
管理员用户和密码访问只读副本。
但是SECONDARY
服务器没有ssrsuser
和我的登录,虽然我可以在SECONDARY.master
中创建一个,但我不能DROP RECREATE
用户,因为SECONDARY.MyApp
数据库处于只读模式。
还有其他办法绕过这个吗。我真的不想让CCD_ 10服务器管理员用户&密码转换为SSRS连接字符串。
无需在用户数据库中重新生成ssruser的SID。由于复制,它已经存在。您所需要做的就是将该SID与辅助服务器中主服务器中的LOGIN相关联。本文提供了详细信息。https://azure.microsoft.com/en-us/documentation/articles/sql-database-geo-replication-security-config/
我希望这能有所帮助。