2011-09-02 91 views
0

我有以下脚本,我希望生产人员使用sqlcmd执行。我想将APP_POOL_USER的名称作为变量传递给脚本,因为他们需要这种方式。不要问我为什么。将登录名作为变量传递给SQL Server脚本

CREATE USER [$(APP_POOL_USER)] FOR LOGIN [$(APP_POOL_USER)] 
    WITH DEFAULT_SCHEMA=[schema] 

我收到以下错误,当我执行上述

码消息15007,级别16,状态1,行2 '$(APP_POOL_USER)' 不是有效的登录名或你做没有权限。

这怎么办?

编辑:

这是批处理文件来执行它,我至今

@ECHO OFF 

SET DB_SERVER_NAME = ".\SQLEXPRESS" 
SET APP_POOL_ACCOUNT = "ExUserAccout" 




sqlcmd.exe -E -S "%DB_SERVER_NAME%" -i "SQL_DB.sql" -o SQL_DB.log -v APP_POOL_USER="%APP_POOL_ACCOUNT%" 
+1

您不能先建立“CREATE USER ...”命令(使用变量),然后将其作为查询参数传递给sqlcmd? –

+0

我猜。这是我从SQL Management Studio中获得的一个大脚本的一部分。我更像是一个前端人物。我可以在同一个脚本中做到吗? – Omar

+1

上面的批处理文件,它现在必须返回一个不同的错误?哦,我明白了,你传递的是.sql文件,而不是查询。那么我想,我们必须查看'SQL_DB.sql'中的内容。 –

回答

0

的解决办法是在批处理文件。

@ECHO OFF 

SET DB_SERVER_NAME=.\SQLEXPRESS 
SET APP_POOL_ACCOUNT=ExUserAccout 

不要在等号和变量名和值之间留空格。