由于开发应用程序的独特方式,我们正在考虑镜像MS SQL数据库(对于Web应用程序),每个用户都有一个SQL服务器login用户帐户,它具有对我们的Web应用程序数据库的权限。
我们一直无法find或使MS SQL数据库从一台服务器镜像到另一台服务器的用户帐户。
是否有可能这样做,或者MS SQL镜像仅限于数据库表/数据。
数据库镜像仅限于数据库,不包括实例级别的任何信息,例如login名和作业。 这些将需要使用脚本或手动过程进行迁移。 Microsoft提供了名为sp_help_revlogin的存储过程,用于导出login名(以及与SQL用户关联的SID),并可以在DR服务器上运行此脚本的输出。 这将创build具有相同密码的login,并且因为数据库用户(不是login,这些是独立的)被映射到使用SID的实例login,并且SID仍然相同,所以应该考虑到您的问题。 您将不得不单独编写SQL作业,尽pipe我认为Bill Graziano有一个脚本实用程序,可以执行这两个function,并且可以进行调度,尽pipe我现在找不到它的链接。
find链接 。
它仅限于数据库。
MSSQL 数据库镜像不会更新相互安全或login设置。
但是,您可以使用Windows集成安全性并将新用户添加到“webapp”安全组。
SQL Server 2012引入了包含的数据库( http://msdn.microsoft.com/en-us/library/ff929071.aspx ) – 实质上,这些数据库与SQL Server实例的其余部分有点隔离。
通过将数据库设置为部分遏制,您可以创build包含的用户 – 凭据和权限存储在实际数据库中,而不是存储在主数据库中,因此包含的用户将针对该数据库而不是SQL Server实例进行身份validation。 因此,如果使用数据库镜像,login名和权限将自动传输到镜像。
要创build包含的用户,还需要在主体和镜像上将sp_configure选项“包含的数据库身份validation”设置为1( http://msdn.microsoft.com/zh-cn/library/ff929237.aspx )
有几个安全的最佳实践,以确保您的数据库保持安全 – 请参阅http://msdn.microsoft.com/en-us/library/ff929055.aspx更多。
如果你不使用SQL 2012,那么我意识到这并没有多大用处,但也许这是升级的好理由!