2011-07-15 149 views
2

我正在爲數據庫創建構建腳本並按字母順序構建視圖。我遇到的問題是在定義中引用的視圖之前創建視圖。引用的視圖稍後在腳本中創建。是否有一個我可以使用的命令會創建一個沒有驗證的視圖,即忽略依賴關係?在SQL Server中創建視圖時忽略依賴關係

注意:存儲過程有「延遲名稱解析」的概念,但我沒有看到使用這種方法來查看視圖。

+1

爲什麼不按照正確的順序創建它們? –

+2

我想要一個自動腳本,不必包含依賴關係的邏輯。 – Josh

回答

1

要添加到@Joe Stefanelli的評論,有很多方法可以按照正確的依賴順序來編寫SQL對象。

  1. 列出相關性順序from the SSMS UI
  2. 使用sp_depends來查找依賴性順序,或使用內置的dependency info tables
  3. 使用SSMS任務 - >生成腳本...嚮導生成腳本,其中can actually be automated使用工具如Scriptio或內置的.NET SMO Library

另一個窮人的解決方案就是多次運行腳本,因爲你有多層依賴關係。現有對象將被忽略,並且每次執行都會創建更多依賴於先前創建的對象的對象。如果可能的話,我不會推薦這個解決方案來找到更直接的東西,如上面列表中所述。

+0

我們將所有數據庫對象都放在源代碼管理(TFS)中,每個對象都有一個單獨的SQL文件。每個文件如果存在則刪除該對象,然後創建該對象。我有一個腳本將它們合併成一個腳本。我正在嘗試構建一個支持此設置的進程,而無需手動調整構建腳本。有沒有告訴SQL Server忽略創建依賴關係的命令? – Josh

+0

我可以給你答案的答案,但只是想要一個權威性的「不,它不能做」 – Josh

+0

@mellamokb:窮人的解決方案假設腳本可以運行多次(而不是一次),其中通常情況並非如此,因爲默認情況下SQL腳本不是idempotent - SSMS也不會生成腳本。 –