修复SQL Server数据库的每个表中拼写错误的列名

修复SQL Server数据库的每个表中拼写错误的列名,sql,sql-server,database,alter,database-management,Sql,Sql Server,Database,Alter,Database Management,我在SSMS中运行了一个sqlserver数据库,其中包含约75个表。我刚刚意识到每个表都有一个modfiedBy列标题,该标题拼写错误,应该改为modifiedBy 有没有办法通过SQL以编程方式更改(ALTER?)所有这些列标题,这样我就不必右键单击-->设计并在每个表上手动重新调用它?有人能提供一个可能有效的例子吗 为此,您需要一个动态SQL解决方案。这应该可以完成任务;只要它不破坏任何约束,关键点。它也不会更新引用旧名称的任何对象 USE YourDatabase; GO DECLAR

我在
SSMS
中运行了一个
sqlserver
数据库,其中包含约75个表。我刚刚意识到每个表都有一个
modfiedBy
列标题,该标题拼写错误,应该改为
modifiedBy


有没有办法通过
SQL
以编程方式更改(
ALTER
?)所有这些列标题,这样我就不必右键单击-->设计并在每个表上手动重新调用它?有人能提供一个可能有效的例子吗

为此,您需要一个动态SQL解决方案。这应该可以完成任务;只要它不破坏任何约束,关键点。它也不会更新引用旧名称的任何对象

USE YourDatabase;
GO

DECLARE @SQL nvarchar(MAX);

SET @SQL = STUFF((SELECT NCHAR(10) +
                         N'EXEC sp_rename ' + QUOTENAME(s.[name] + N'.' + t.[name] + N'.' + c.[name],N'''') + N',''modifiedBy'',''COLUMN'';'
                  FROM sys.schemas s
                       JOIN sys.tables t ON s.schema_id = t.schema_id
                       JOIN sys.columns c ON t.object_id = c.object_id
                  WHERE c.[name] = N'modfiedBy'
                  FOR XML PATH(N'')),1,1,N'');
PRINT @SQL;
EXEC sp_executesql @SQL;

@Lamu我不能100%确定每个表上的值是否相同,但我相信大多数(如果不是全部的话)都是
varchar(50)
。(里面可能有一两个w/
nvarchar(50)
,但我可以自己更改这些。别担心,反正我有一个心理障碍。你需要动态sql。示例正在进行中。这些列在键、存储过程、视图或其他什么中引用过吗?sql的哪个版本?