Sql 从多个表中删除列

Sql 从多个表中删除列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有4列在数据库的所有表中重复,我必须删除它们 如何在不必逐个表输入的情况下执行此删除操作?SQL Server提供了可以查询以检索数据库信息的功能 在您的情况下,该视图可用于获取包含特定列名的所有表的名称 选择表名称、列名称 从信息_SCHEMA.COLUMNS 列名称在哪里 “ID_Integracion_Codega”, “ID_Integracion_fecthaultrep”, “ID_Integracion_ControlTrigger”, “身份证综合证” ; 从那里,您可以使用常

我有4列在数据库的所有表中重复,我必须删除它们

如何在不必逐个表输入的情况下执行此删除操作?

SQL Server提供了可以查询以检索数据库信息的功能

在您的情况下,该视图可用于获取包含特定列名的所有表的名称

选择表名称、列名称 从信息_SCHEMA.COLUMNS 列名称在哪里 “ID_Integracion_Codega”, “ID_Integracion_fecthaultrep”, “ID_Integracion_ControlTrigger”, “身份证综合证” ; 从那里,您可以使用常规流程从现有表中删除

ALTER TABLE[TABLE_name]删除列[COLUMN_name]; 你应该非常小心使用这种方法。写一篇你不想写的专栏是很容易的

请注意此操作可能会影响数据库架构中的任何约束/依赖项

表中是否有受删除这些列影响的内容?尤其是删除可能影响其他表的级联约束。 是否存在依赖于这些列的视图/存储过程/触发器? 您是否有因删除这些列而受到影响的查询/动态SQL? 此代码将输出进行更改所需的SQL

字符串_AGG用于两次对列和表进行分组。QUOTENAME用于在名称周围正确放置括号

选择字符串\u AGG N'ALTER TABLE'+QUOTENAMESCHEMA.schema'u id+N'.+quoteNameSet.object'u id+N' “+c.ColumnSql,N” ' 从sys.t表 交叉应用 选择ColumnSql=STRING_AGGCASTN'DROP COLUMN'+QUOTENAMEc.name作为nvarcharmax,N' ' 来自sys.c列 其中c.object\u id=t.object\u id 和c.name “ID_Integracion_Codega”, “ID_Integracion_fecthaultrep”, “ID_Integracion_ControlTrigger”, “身份证综合证” C 您可以使用

声明@sql nvarcharmax= 选择字符串\u AGG。。。。。 ; EXEC@sql;
我警告您不要使用信息模式,因为它只是为了兼容性。

根据问题指南,请不要发布代码、数据、错误消息等的图像-将文本复制或键入问题中。请保留图像用于图表或演示渲染错误,这些内容无法通过文本准确描述。请展示您的尝试,并告诉我们您在本网站或其他网站上发现了什么,以及为什么它不能满足您的需求。