2011-03-14 46 views
0

我正在爲我的公司進行短期災難恢復計劃工作,並且我們計劃在複製報告服務器用作溫備件以防我們的主事務服務器死亡。遠程授予對SQL數據庫角色的權限

我們的Web應用程序可以寫入該事務服務器,但只有SQL角色給定的某些權限。 (web應用程序)我想給我們一種更新這個角色的方法,它也更新了與其他服務器上存在的角色相同的角色。這樣,如果我們故障轉移到另一臺服務器,我們的Web應用程序角色相當接近,即使不完全相同。 (我真的不擔心有人直接更新它)

所以,我有一個MakeWebWriteable程序,應該生成和執行一些代碼,如下所示。除了下面的內容顯然是行不通的。我不知道如何引用角色並在遠程服務器上進行更新。我想過使用exec (@sql) at [reporting\server],但我不確定如何引用某個數據庫的角色對象。

grant insert, update, delete on dbo.TableName to webapplication 
grant insert, update, delete on [reporting\server].DBName.dbo.TableName to [reporting\server].DBName.dbo.webapplication 

我該怎麼做,或者有沒有更好的點子? (即複製)


編輯1:我們一般寫遷移爲SQL腳本,提交那些SVN,並有我們的數據庫有同步腳本更新 - 有點像什麼回報率的過程中,只有不模型 - > SQL轉換。理想情況下,如果我們希望表可以寫入網頁,那麼我們只需在遷移結束處添加一行即可。

-- Code to create NewTable... 

if object_id('SetWebWriteable') is not null 
    exec SetWebWriteable @tableName = 'NewTable' 

這樣,我們的開發人員機器上就沒有任何反應,但在我們的測試和生產環境中,會發生正確的操作。如果角色可以自動複製,那麼我們當然不需要這樣做。

回答

0

從您所描述的內容中,您需要SQLCMD實用程序。使用它接受的憑據連接到任何服務器(我通常使用代表Windows身份驗證的-E)並執行任何需要的腳本。如果您在那裏不受信任,請創建具有足夠憑據的帳戶。

問題是:此腳本執行的觸發器是什麼?你是否手動執行它,或者它是否應該自動啓動。在這種情況下,你必須寫一些代碼來實現這一點(雖然不是很困難)。

而且您可以利用SQL Server 2008內置的powershell,它可以在任何服務器上的對象上運行您可以連接到(使用憑據)。研究一下。它有一個幫助TON的cmdlet Invoke-Sqlcmd。

盧克

+0

我已經編輯我的問題,以解決您的問題。我們希望基本上保持SQL腳本的侷限性,並且這是通過遷移腳本半手動觸發的。 – 2011-03-14 21:46:02

相關問題