我有一个包含许多表的数据仓库,这些表中的一些列由视图或存储过程引用。 我需要从数据仓库表中删除所有未被视图或存储过程引用的列。 一种方法是使用' 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代码
时,它会失败我们还有其他方法吗?我想摆脱所有不必要的列并节省仓库空间
提前致谢!