我需要重命名数据库中所有表中的列。因此必须在所有表中将“ OldColumn”列重命名为“ NewColumn”
我可以使用此查询获取具有此列的表的列表:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME= <Column Name>
但是,如何在所有表中重命名它却尽可能简单,而不必编写游标呢?
当然,您不需要为此使用光标。您可以使用sys.columns和sys.objects生成动态sql。然后简单地执行它。一旦您对动态sql感到满意,就可以随意取消最后一行的注释。
-—警告!!!! ----如果更改列名,则视图,存储过程,函数等都将被破坏。
declare @CurrentColumnName sysname = 'asdf' , @NewColumnName sysname = 'qwer' , @SQL nvarchar(MAX) = '' select @SQL = @SQL + 'EXEC sp_rename ''' + o.name + '.' + c.name + ''', ''' + @NewColumnName + ''', ''COLUMN'';' from sys.columns c join sys.objects o on o.object_id = c.object_id where c.name = @CurrentColumnName select @SQL --exec sp_executesql @sql