SQL Server 如何删除工具生成的名为createdby updatatetc的列

6ioyuze2  于 2022-12-03  发布在  其他
关注(0)|答案(2)|浏览(110)

我使用Redgate工具来同步SQL Server数据库中的数据,在此过程中,该工具在每个表中创建了四个新列,其名称类似于createdbyupdatedby等。
现在数据已同步,我不再需要这些列。
是否有一种简单的方法(可能是脚本)来删除这些列?

kmbjn2e3

kmbjn2e31#

可以通过运行以下语句删除这些列

ALTER TABLE table_name
DROP COLUMN column_name;

https://www.sqlservertutorial.net/sql-server-basics/sql-server-alter-table-drop-column/
编辑:正如Dale所建议的,我们的目的可能是想办法集体删除这些专栏,所以这里有一个更新:
我倾向于生成不需要 * 完全 * 自动化的代码,但需要相对容易更新。如果我有几十个或几百个表需要删除额外的列,我会编写一个类似下面的查询,然后从SSMS的下部窗格复制结果并执行生成的脚本。

select 'alter table ' + quotename(table_schema) + '.' + quotename(table_name) + ' drop column ' + quotename(column_name) 
from information_schema.columns
where 1=1
and column_name in ('createdby', 'updatedby')
i2loujxw

i2loujxw2#

这里有一个替代的解决方案,不如@dalek
使用一个新的db项目和tool-schema-compare将架构吸入Visual Studio。然后使用下面的正则表达式替换所有,用空替换。
这将删除不需要的列

\[CreatedAt\][^\,.]+\,

这将删除表列create末尾不需要的列之前的所有悬挂逗号

\,([\s\r][\s]+)+\)

相关问题