在 SQL Server 2014 中创建具有特定 SID 的用户

Create user with specific SID in SQL Server 2014

我需要在我的测试服务器上创建一个与实时服务器上的用户具有相同 SID 的用户。这是因为我们经常将数据库从实时服务器复制到测试服务器以获取新数据,完成此操作后,我在测试服务器上拥有的用户无法访问复制的数据库,因为该用户具有不同的 SID比在实时服务器上。

我想我已经有了解决方案,但我有点害怕直接 运行 解决它。如果我真的搞砸了,那我就有麻烦了。当然,没有我在实时服务器上 运行 那样麻烦,但仍然如此。搞砸测试服务器也不是最佳选择。

USE master
GO

DROP LOGIN myuser
GO

CREATE LOGIN [myuser] 
     WITH PASSWORD = 'mypassword',
     SID = 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEE40EE,
     DEFAULT_DATABASE = [MYDB],
     DEFAULT_LANGUAGE = [us_english],
     CHECK_EXPIRATION = OFF,
     CHECK_POLICY = ON
GO

ALTER LOGIN [myuser] ENABLE
GO

USE MYDB
GO

DROP USER myuser
GO

CREATE USER myuser FOR LOGIN myuser
GO

EXEC sp_addrolemember 'db_datareader', 'myuser'
EXEC sp_addrolemember 'db_datawriter', 'myuser'

这是正确的吗?

你真的不需要那样做。您需要做的就是同步将用户与登录相关联的 SID。如果您尝试使用的 SID 存在于您的实例中,会发生什么情况?

使用 Erland 发布的脚本更容易 here