首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找sql server中表中所有有用的列。

查找sql server中表中所有有用的列。
EN

Stack Overflow用户
提问于 2017-04-26 10:20:07
回答 3查看 44关注 0票数 0

我有一个表,它有50+列,但是只有很少的列被使用。这意味着当任何存储过程使用该表时,它只引用select/where语句中的4-5列。其余的列没有被使用。我只想列出那些被实际使用的列。一种方法是查找表的依赖项,然后遍历每个SP并找出正在使用的列。但在这种情况下,我有30+ Sp。有没有什么有效的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-26 10:37:51

试试这个:

代码语言:javascript
复制
select name from syscomments c 
join sysobjects o on c.id = o.id 
where TEXT like '%table_name%' and TEXT like '%column_name%'

在table_name给出表名,在column_name给出要为其设置的列时,dependencies.You将将存储过程名称作为输出

票数 2
EN

Stack Overflow用户

发布于 2017-04-26 13:20:33

若要在过程中使用多列,可以使用如下代码

代码语言:javascript
复制
create procedure sp_sample
@column_names varchar(200)
as
if @column_names='' or @column_nams is null
  set @column_names='*'

exec ('select '+@column_name +' from table')

以下是一些例子:

代码语言:javascript
复制
exec sp_sample @columnname='id,name'

代码语言:javascript
复制
exec sp_sample @columnname='id,name,telphone'
票数 3
EN

Stack Overflow用户

发布于 2017-04-26 13:32:29

如果使用Server数据工具将数据库导入为数据库项目,则可以使用“查找所有引用”上下文命令查找对表或列的所有引用。这一点特别有用的是准确性:它甚至会找到SELECT *的实例,这些实例没有显式地提到列,但无论如何都会隐式地引用它。它也不会被具有类似名称的表或列所混淆(在其他情况下,查找ID的特定实例是相当有问题的)。

如果您只想知道某列是否被引用,您只需删除它,并查看错误列表中是否出现了“未解决的引用”错误--如果是,则该列将在某个位置使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43631381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档