我正在Visual Studio 2010中的SQL Server 2008数据库服务器项目中创建用户创建脚本。
脚本看起来像这样...
CREATE LOGIN DomainUser FROM WINDOWS
我将在我的台式电脑和笔记本电脑上开发。既不在域上运行,也不使用本地用户,例如 DESKTOPTestUser
和LAPTOPTestUser
.
我需要做的是以某种方式将变量注入到自动设置域名的脚本中。我相信在SQL Server中,这是@@SERVERNAME
。然后我可以在我的两台电脑上工作,脚本就可以工作了。目前,如果我在我的笔记本电脑上运行它,我会收到一个错误DESKTOPTestUser
因为我的笔记本电脑上不是 Windows 主体。
我已经查看了 .sqlcmdvars 文件,我可以在其中设置一个注入脚本的变量。但是,我似乎无法将其用于诸如@@SERVERNAME
之类的动态内容。
我还查看了从我的部署后脚本运行 EXEC 的问题,但我收到一个错误,指出此命令在这种情况下无效 - 我相信这意味着 VS2010 DB 项目中不接受 EXEC。
您可以使用以下脚本来实现此目的。它对我很有用,并为本地用户创建了一个登录名:
declare @sql nvarchar(max) = N'create login [' + @@SERVERNAME + N'TestUser] from windows'
exec(@sql)