我需要在我的测试服务器上创建一个用户,该用户与实时服务器上的同一用户具有相同的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'
这是正确的吗?
答案 0 :(得分:1)
你真的不需要这样做。您需要做的就是同步将用户与登录相关联的SID。如果您尝试使用的SID存在于您的实例中会发生什么?
使用Erland发布的here
脚本更容易