我想编写一个SQL 2005脚本来创建一个使用Windows身份验证的新登录.Windows用户是本地帐户(不是域帐户).许多SQL Server计算机上都存在具有相同名称的本地帐户,我希望在所有这些计算机上运行相同的脚本.
看起来很简单:
CREATE LOGIN [MyUser]
FROM WINDOWS
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用!SQL返回错误,说Give the complete name: <domain\username>.
当然,我可以为一台机器执行此操作并且它可以工作,但是相同的脚本在其他机器上不起作用.
EMP*_*EMP 12
看起来sp_executesql就是答案,就像沙滩发布的那样.我也会发布我的,因为如果你像我们一样使用命名的SQL实例,@@ SERVERNAME就无法正常工作.
DECLARE @loginName SYSNAME
SET @loginName = CAST(SERVERPROPERTY('MachineName') AS SYSNAME) + '\MyUser'
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = @loginName)
BEGIN
DECLARE @sql NVARCHAR(1000)
SET @sql = 'CREATE LOGIN [' + @loginName + '] FROM WINDOWS'
EXEC sp_executesql @sql
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18635 次 |
最近记录: |