如何从数据仓库中删除未被视图或存储过程引用的列

时间:2015-09-16 12:15:46

标签: sql-server data-warehouse

我有一个包含许多表的数据仓库,这些表中的一些列由视图或存储过程引用。 我需要从数据仓库表中删除所有未被视图或存储过程引用的列。 一种方法是使用' TEXT'在SYSCOMMENTS中的字段,如下面的代码,这是我在堆栈溢出本身找到的东西

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

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 + '%' 

但是当我们在视图中使用*而不是column_name或sp代码

时,它会失败

我们还有其他方法吗?我想摆脱所有不必要的列并节省仓库空间

提前致谢!

0 个答案:

没有答案