7
我想通過腳本創建數據庫後創建SQL Server登錄。 登錄對於主機是本地的,並且此腳本將在多個主機上運行。通過腳本使用變量創建SQL Server登錄
我想要做的是:
USING MyDatabase
CREATE MyUser FOR LOGIN USER <computer name>/MyUser
什麼我不知道該怎麼做的是結合了計算機名稱(例如Location0001。)這個說法。
登錄確實存在於每臺計算機上並且已在SQL Server上列出,因爲它可以訪問其中的其他數據庫。
如果是相關的,腳本應該能夠SQL Server上運行2008
登錄看起來像這樣對每一臺機器:
Location0001\MyUser
Location0002\MyUser
Location0999\MyUser
任何幫助將感激,謝謝。
編輯:我的基礎上,接受的答案最終解決方案如下:
DECLARE @cmd VARCHAR(200)
SET @cmd = N'CREATE USER [MyUser] FOR LOGIN [' + HOST_NAME() + '\MyUser]'
EXEC (@cmd)
我沒有想到使用內聯SQL。謝謝,我不得不做一些語法修改,但這個概念確實起作用。 – Terry
考慮使用sp_executesql而不是EXEC(UTE)。它允許參數化查詢,從而消除SQL注入的可能性,並利用計劃緩存中的計劃重用。 – 2011-09-28 00:43:06
此建議僅適用於默認實例。對於命名實例,「@@ servername」將返回「MACHINE \ INSTANCE」,因此CREATE USER將失敗。您需要HOST_NAME(),如建議的OP,或者ServerProperty('MachineName'),這取決於您想要實現的目標。我知道這已經得到解答 - 我正在爲那些通過網絡搜索來到這裏的人寫信。 – Cozzamara