簡體   English   中英

如何批量更新視圖?

[英]How to do bulk update of views?

我的數據庫有大約30個視圖,其中大多數視圖都引用了該服務器上的另一個數據庫(稱為DB1 )。

現在,無需深入說明原因,我需要將所有這些視圖都更新為DB2 ,也應在本地服務器上。

我討厭必須在每個視圖上手動執行此操作。 我是否可以運行一些SQL查詢,以在所有視圖中將所有出現的字符串“ DB1”替換為“ DB2”?

您可以像這樣查詢sys.sql_modules,我將使用它通過bcp生成文件(SSMS將截斷結果),該文件可以作為另一個SQL腳本運行。 這也保留了權限。

我以前使用過這種技術,並且可以正常工作。

SELECT
    REPLACE (REPLACE (sm.definition, 'CREATE VIEW', 'ALTER VIEW'), 'DB1.', 'DB2.') + '
    GO'
FROM
    sys.sql_modules sm
    JOIN
    sys.objects o ON sm.object_id = o.object_id
WHERE
    sm.definition LIKE '%DB1.%' AND o.type = 'V'

導航到views文件夾,現在按F7(對象資源管理器詳細信息),然后從右窗格中選擇所需的所有視圖,右鍵單擊->腳本視圖為-> DROP and CREATE TO >新查詢窗口。 在其中將DB1更改為DB2和voila

看圖片 替代文字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM