2014-05-22 21 views
2

在Microsoft SQL Server 2008 R2,比方說我的數據庫有以下幾種觀點:SQL:如何查看視圖列到表列的映射?

create view [dbo].[MyView] 
    (
     [MyColumnA] 
    ) 
    AS 
    (SELECT MyColumnB FROM MyTable) 

假設現在我只知道有一種說法叫做MyView的,有一個叫MyColumnA列,但我不知道知道它映射到MyTable.ColumnB。什麼是確定哪個表和列MyView.ColumnA映射到的最簡單/最快捷的方式?有沒有可以告訴我這個問題的查詢?例如:

SELECT TABLE_NAME, TABLE_COLUMN_NAME 
    FROM INFORMATION_SCHEMA.VIEW_MAPPINGS 
    WHERE VIEW_NAME = 'MyView' AND VIEW_COLUMN_NAME = 'MyColumnA' 

此查詢將返回[MyTable,MyColumnB]。

目前我必須在SSMS對象資源管理器中找到視圖,右鍵單擊它並生成創建腳本,然後搜索視圖列的名稱。然後我注意到它在視圖中的順序位置(比方說第4列),並且必須在select語句中找到相應的第4列。 select語句很可能會使用表別名,因此我必須查看JOIN語句以查找基於別名的表名。

這是相當耗時的,我希望找到一個更快的方法,如果不是通過查詢,那麼可能通過一些比我的更快或更容易的其他過程。

+0

見http://stackoverflow.com/questions/10048056/find-the-real-column-name-of-an-alias-used-in-a-view – Turophile

回答

2

則sp_depends應該工作

SP_DEPENDS 'MyView' 
+0

這種工作 - 它確實顯示哪些列映射到某個視圖中,但我沒有顯示實際的映射,這是OP(和我)正在尋找的內容。我希望有一種方法可以強制您生成的視圖定義位於「SELECT W作爲X,Y作爲Z等」佈局,而不是OP在上面顯示的佈局,但似乎不可能。 – SqlRyan

+0

@SqlRyan是的。我正在尋找完全一樣的東西。請讓我知道,如果你找到一個方法。 –

+0

@PouyaBCD是的,我從來沒有找到答案,但仍然有希望......四年後:) – SqlRyan