2011-06-02 94 views
1

我试图做到这一点SQL gen之类的登录标识

declare @aspAccountName varchar(30); 
SET @aspAccountName=HOST_NAME() + '\ASPNET'; 

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = @aspAccountName) 
    CREATE LOGIN (SELECT @aspAccountName) FROM WINDOWS WITH DEFAULT_DATABASE=[master] 

但它说,“附近有语法错误@aspAccountName“ - 任何想法?

感谢

回答

1

你不得不写CREATE LOGIN部分的动态SQL。

DECLARE @sql nvarchar(200) 

SET @sql = N'CREATE LOGIN ' + @aspAccountName + N' FROM WINDOWS WITH DEFAULT_DATABASE=[master]' 

EXEC sp_executesql @sql 
+0

我试图避免沿着那条路线走下去,但你是对的,它的工作原理。任何人有任何想法为什么我的原始示例不起作用? – nchaud 2011-06-02 21:58:35

+0

@ahmadiyya:就像错误说的那样,它只是无效的语法。 – 2011-06-02 21:59:17