2011-05-25 43 views
1

我正在尋找一種方法將存儲過程從一個SQL數據庫複製到另一個同一實例上。它需要是自動的,最好是通過代碼(t-sql或其他),所以使用生成腳本技巧是不可行的(另外我不想保留那麼多腳本,並且人們忘記運行它們)。SQL:以編程方式將存儲過程從一個數據庫複製到另一個

我已經搜索了一下,並沒有找到一個可行的解決方案。有人提出了一個聰明的竅門,將所有的存儲過程文本生成到一個sql字段中,然後將其轉換並在目標數據庫上執行它,但不幸的是有問題。

有沒有人有任何其他想法如何可以做到這一點,如果它是可能的?

如果我不能以編程的方式做,它會使用ssis的快速解決方案嗎?

謝謝。

編輯:使用sql 2005和2008版本的混合。

+1

你使用過RedGate的SQL工具嗎? – Jaymz 2011-05-25 11:54:12

+0

你有什麼發現?不要你有程序來源/你不能直接使用它們嗎?爲什麼你提到的巧妙技巧不起作用? – 2011-05-25 11:56:29

+0

我還沒有嘗試RedGate的SQL工具,即時通訊嘗試保持本機,因爲這是我寫的數據庫比較工具的最後一部分。它有我認爲並且不會執行的評論的問題。 – Richy321 2011-05-25 12:02:12

回答

0

您可以在.NET中使用的SMO framework.

免費/輕鬆的實現可以通過PowerShell.

做我有一個腳本,不只是這個編程方式做到這一點 - 它生成SQL對象的腳本,包括Stored Procs,並在目標服務器上執行創建腳本。

當安全問題不允許鏈接服務器時,這是一個方便的解決方法,但您需要保持跨多臺服務器同步某些資源。

如果你關心的只是特效,應該很簡單,在源數據庫和目標數據庫上檢查sys.sql_modules,並通過該視圖中的definition字段執行目標中不存在的任何數據。

相關問題