Sql server 2008 r2 从SQL Server中特定架构的多个表中删除列
我有许多表在不同的模式(如dbo、stg、tmp等)中包含列作为RowId,但我只想删除stg模式表中的列 请提供一个脚本以满足上述条件 Thanx提前先备份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];' +
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
对于大型桌子,这可能非常缓慢。创建一个新表,一个旧表的副本,但是要进行更改,并插入数据,通常要快得多。删除旧表,然后重命名新表谢谢您的帮助,它正按照我的要求正常工作。