2013-03-30 49 views
1

我正在研究由獨立軟件供應商開發的C#代碼和SQL 2008數據庫,並試圖優化代碼。查找表的列,存儲過程,視圖和函數引用哪個列

有一個非常高的表沒有。的列,其中許多可能不是明顯要求的。我想知道該表的哪些列被其他表,存儲過程,視圖或函數引用,以便我可以刪除不需要的列。

我不是SQL 2008的專家;所以如果有任何內置的工具或查詢,將欣賞一步一步的指示。

使用視圖依賴關係,我只能找出哪些其他對象引用此表,但它不告訴這個表由其他對象引用的列。

回答

2

選擇表名,然後按下ALT + F1,它會爲您提供在SQL Server中引用其他表和視圖的列的詳細信息。

此外,您可以使用以下查詢進行關鍵字搜索。您需要在@Keyword變量中編寫所需的列名,然後下面的查詢將爲您提供該關鍵字所用的所有對象詳細信息。

set nocount on 
declare @Keyword as varchar(200) 
set @Keyword = 'Column name' 

SELECT DISTINCT 
    name, 
    CASE o.xtype 
     WHEN 'S' THEN 'System Stored Proc' 
     WHEN 'F' THEN 'Foreign Key' 
     WHEN 'U' THEN 'Table' 
     WHEN 'V' THEN 'View' 
     WHEN 'P' THEN 'Stored Proc' 
     WHEN 'PK' THEN 'Primary Key' 
     WHEN 'TR' THEN 'Trigger' 
     WHEN 'UQ' THEN 'Unique Index' 
     WHEN 'D' THEN 'Default' 
     WHEN 'FN' THEN 'User Defined Function' 
     ELSE 'Unknown' 
    END, 
    text 
FROM 
    sysobjects o left join syscomments c ON c.id = o.id 
WHERE 
    text LIKE '%' + @Keyword + '%' 
OR name LIKE '%' + @Keyword + '%' 
+0

已確認,效果很好。 –

+0

是的,它會幫助很多,看我已編輯的答案,看看 – Mudassir

+0

我按表Alt + F1的表名。什麼都沒發生?此外,使用上述查詢,我​​將不得不運行查詢約。超過100次(每列一次)。有沒有更好的方法來識別表中所有使用的列? – AllSolutions

相關問題