Sql server 2008 r2 从SQL Server中特定架构的多个表中删除列

Sql server 2008 r2 从SQL Server中特定架构的多个表中删除列,sql-server-2008-r2,alter-table,alter,Sql Server 2008 R2,Alter Table,Alter,我有许多表在不同的模式(如dbo、stg、tmp等)中包含列作为RowId,但我只想删除stg模式表中的列 请提供一个脚本以满足上述条件 Thanx提前先备份 DECLARE @SqlStatement VARCHAR(MAX) SELECT @SqlStatement = COALESCE(@SqlStatement, '') + 'ALTER TABLE [stg].' + QUOTENAME(TABLE_NAME) + ' DROP COLUMN [RowId];' +

我有许多表在不同的模式(如dbo、stg、tmp等)中包含列作为RowId,但我只想删除stg模式表中的列

请提供一个脚本以满足上述条件

Thanx提前

先备份

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
安装舒尔后,请执行dinamyc SQL语句

exec sp_executesql @SqlStatement

对于大型桌子,这可能非常缓慢。创建一个新表,一个旧表的副本,但是要进行更改,并插入数据,通常要快得多。删除旧表,然后重命名新表谢谢您的帮助,它正按照我的要求正常工作。