2011-08-29 24 views
1

我正在使用我的SQL部署腳本。我有一個名爲「User123」的登錄名,我已經添加到我當前的數據庫,但我有一個存儲過程,記錄信息到MyDB,我需要在MyDB的User123權限,所以我創建了一個用戶在MyDB的權限,但是我怎麼腳本,而不是手動添加用戶..將用戶腳本編寫到特定數據庫?

我有這個目前爲止,但似乎無法弄清楚如何將其添加到其他數據庫,「MyDB」可以硬編碼,因爲只會有1在每個服務器上,但我不能硬編碼在

 
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123') 
BEGIN 
    CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo] 
END 
GO 

當前數據庫上這僅運行當前數據庫進出口運行腳本,怎麼辦我使它對其他數據庫運行。

例..

MYDB
 安全
    User123

DB1
 安全
    User123

我想一個腳本,將用戶添加到這兩個當前數據庫和「MYDB」,而無需手動切換數據庫

+0

我通常使用INSERT INTO sys.database_pricipals其中name = N 'user123' 只是把插入行兩次,每個數據庫一次? 也許我誤解了這個問題? –

+0

@JohnnyCraig:難道這個USE 仍然是相關的嗎?或者至少INSERT必須是完全合格的 - 即。 INSERT INTO MyDB.sys.database_principals ...但問題是在使用INSERT方法時是否所有字段都設置正確。你有沒有驗證過這個? – 2011-12-21 08:57:17

回答

2

什麼:

USE MyDB 
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123') 
BEGIN 
    CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo] 
END 
GO 

USE DB1 
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123') 
BEGIN 
    CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo] 
END 
GO 
+0

MSDN也有類似這樣的切換數據庫的例子。 http://msdn.microsoft.com/en-us/library/ms173463.aspx @LeeHull如果通過「不得不手動切換數據庫」的意思,而不使用「USE [DB NAME]」,那麼我相信你可以編寫一個腳本來爲你自動化。 –

相關問題