2011-02-10 37 views
0

如何知道有多少數據庫表,視圖或任何其他對象附加到sql server 2005數據庫中的視圖。 我試過用Sp_Depends,但令人驚訝的是它沒有顯示它正在使用的SP名稱。與視圖相關的數據庫對象 - sql server 2005

當我運行語句Sp_depends vw_MyViewName。

我只獲取我在vw_MyViewName中使用的表和列的名稱。我需要知道與此視圖相關的其他對象。

回答

0

直到sys.sql_expression_dependencies介紹(SQL Server 2008中),您需要查詢sys.sql_modules

SELECT OBJECT_NAME(object_id) 
FROM sys.sql_modules 
WHERE definition LIKE '%MyTable%' 

個人而言,我會使用WITH SCHEMABINDING來確保依賴性必須存在

0

我知道在SQL Server數據庫中確定對象依賴關係的唯一完全可靠的方法是將您的模式加載到Visual Studio數據庫版本(DBPro)中,並檢查其中的依賴關係。與SQL Server跟蹤依賴關係的方式不同,我發現這是十分簡單的。

我不一定會爲此錯誤SQL Server。我認爲它從來沒有聲稱它能夠以100%的精度跟蹤依賴關係,主要是因爲它綁定對象的方式。

+0

不確定您使用的是哪個版本。 2008年,依賴視圖比2005年更可靠。唯一沒有正確跟蹤的依賴是動態SQL AFAIK。 – 2011-02-11 12:51:21

0

在SQL Server Management Studio的「對象瀏覽器」面板中,右鍵單擊要檢查的對象(存儲過程,表,視圖等),然後單擊「顯示相關性」。

出現的窗口中,會顯示這兩個依賴和「依靠」的對象,僅僅通過兩個單選按鈕之間進行切換;)

如果你想手工做,你需要建立在一個查詢sys.sql_dependencies系統視圖。 Here a link來說明一些例子

請注意,存儲過程取決於nonexistants表,視圖和其他對象,將被創建,但不僅它們顯然不起作用,但依賴信息將不會被添加,直到所有「依賴」對象被創建,並且SP被重新創建!

1

在SQL Server 2005中,如果按照錯誤的順序創建對象,會發生這種情況。

你會得到無法添加依賴信息丟失的對象,但對象仍然會創建

你可以在你的數據庫上運行的所有對象​​重建這種缺少相關信息的警告消息(一個示例腳本這樣做是在這裏How do I find all stored procedures that insert, update, or delete records?

相關問題