2011-09-02 36 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 

不要在等號和變量名和值之間留空格。