从SQL Server中的特定模式中的多个表中删除列

时间:2014-06-19 17:09:04

标签: sql-server-2008-r2 alter-table alter

我有很多包含列的表格为" RowId"在不同的架构中,如dbo,stg,tmp等,但我想删除只有stg架构表的列。

请提供一个符合上述条件的脚本。

提前完成

1 个答案:

答案 0 :(得分:0)

先备份

DECLARE @SqlStatement VARCHAR(MAX)
SELECT @SqlStatement = 
    COALESCE(@SqlStatement, '') + 'ALTER TABLE [stg].' 
    + QUOTENAME(TABLE_NAME) + ' DROP COLUMN [RowId];' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES t 
  INNER JOIN sys.objects o ON o.name=t.TABLE_NAME
    INNER JOIN sys.columns c ON  o.object_id= c.object_id
WHERE TABLE_SCHEMA = 'stg' and  c.name='RowId'

PRINT @SqlStatement

一旦你恢复,执行动态SQL语句

exec sp_executesql @SqlStatement