2009-02-12 17 views
3

我想編寫SQL 2005腳本以創建使用Windows身份驗證的新登錄名。 Windows用戶是本地帳戶(不是域用戶)。許多SQL Server計算機上都存在同名的本地帳戶,我想在它們上運行相同的腳本。使用Windows身份驗證而不使用計算機名的腳本SQL Server登錄

這似乎很簡單:

CREATE LOGIN [MyUser] 
FROM WINDOWS 

但是,不行! SQL返回錯誤,說Give the complete name: <domain\username>.

當然,我可以爲一臺機器做到這一點,它的工作原理,但相同的腳本不會在其他機器上工作。

回答

11

貌似sp_executesql的是答案,沙灘公佈。我也會發布我的,因爲@@ SERVERNAME不能正常工作,如果你使用命名SQL實例,就像我們一樣。

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 
4

這只是爲我工作:

DECLARE @sql nvarchar(1000) 
SET @SQL = 'CREATE LOGIN [' + @@SERVERNAME + '\MyUser] FROM WINDOWS' 
EXEC sp_executeSQL @SQL 
相關問題