回答
您可以使用SQL Server元数据表为您的目的创建动态sql语句。 有关可用表的列表,可以使用sys.tables获取表列表和sys.columns获取列表。使用这些表可以创建一个sql语句表。要执行动态sqls,您需要sp_executesql存储过程。
这是一个示例代码,只是为了演示如何使用元数据表和sp_executesql: 并注意我使用了其他更适合我的元数据表。你也可以使用游标来运行查询返回的所有脚本。
CREATE Database TestDB
CREATE Table Table1 (Id int , fieldA varchar(50))
Declare @update_query nvarchar(max)
select
@update_query = 'sp_rename ''' + t.TABLE_NAME + '.' + c.COLUMN_NAME + ''',''' + 'fieldB' + ''''
From INFORMATION_SCHEMA.COLUMNS c JOIN INFORMATION_SCHEMA.Tables t ON c.TABLE_CATALOG = t.TABLE_CATALOG AND c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
WHERE
c.COLUMN_NAME = 'fieldA'
SELECT @update_query
EXEC sp_executesql @update_query
看起来我会用这个作为基础来制作我自己的工具集。 –
看看VS2010中的数据库项目类型,如果还没有的话。它具有很多使数据库重构比使用SQL Server Management Studio更容易的功能。
例如,如果您重命名某个列,它将为所有引用旧列名称的FK提供构建错误。并且它会进行大量的构建时验证,以确保您的数据库对象不会引用不再存在的对象。而且因为所有的数据库对象都保存为文本文件,像重命名这样的操作几乎就是搜索/替换。
此外,它具有非常方便的“同步”功能,可以比较数据库项目脚本&数据库,生成DIFF报告并生成脚本以在两者之间移动选定的更改(无论是DB项目还是SQL Server,反之亦然)。
说了这么多之后,它不会自动为您进行重命名 - 换句话说,当您重命名列时,它不会在整个项目中修正对该列的所有引用。但是,如果你犯了一个错误,你将在验证数据库结构时发生构建错误。因此,至少可以轻松找到需要更改的地点。
虽然我是一个沉重的VS用户。我想要独立的东西。 –
如果您使用的是Azure SQL Server,则可以使用Sam的答案和另一个输入参数sp_rename,@objtype ='COLUMN'。
Declare @update_query nvarchar(max)
select
@update_query = 'sp_rename ''' + t.TABLE_NAME + '.' + c.COLUMN_NAME + ''',''' + 'fieldB' + ''',''' + 'COLUMN' + ''''
From INFORMATION_SCHEMA.COLUMNS c JOIN INFORMATION_SCHEMA.Tables t ON c.TABLE_CATALOG = t.TABLE_CATALOG AND c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
WHERE
c.COLUMN_NAME = 'fieldA'
SELECT @update_query
EXEC sp_executesql @update_query
- 1. 重命名字段
- 2. 如何快速重构/重命名大型数据库中的表,字段和值?
- 3. 重命名MATLAB结构中的多个字段
- 4. 重命名数据库
- 5. MySQL - 重命名数据库
- 6. PostgreSQL - 重命名数据库
- 7. 重命名Rails数据库
- 8. 重命名ActiveAdmin中的参数/字段
- 9. 重命名数据库中的字段并重新安装应用程序
- 10. 如何在MATLAB中重命名结构数组中的字段?
- 11. 命名数据库表字段
- 12. 在mysql中重命名表数据字段
- 13. 重命名cPanel中的数据库
- 14. 烘烤后重命名数据库字段
- 15. 数据库表重构
- 16. 重命名数据库名称 - mysql
- 17. 在geokettle中重命名字段名称
- 18. Django字段重命名
- 19. Resharper重命名字段
- 20. 如何重命名名称为“数据库”的MSSQL数据库?
- 21. eclipse中字段的重命名
- 22. 重命名PDF中的字段
- 23. 循环重命名R数据框中的字段
- 24. 在MySQL中,如何批量重命名数据库中的表?
- 25. 数据库设计 - 一个表中有许多字段,许多表中有一个字段或抽象表?
- 26. Visual Studio“重命名”重构
- 27. 重建两个表中的数据并重命名表数据中的行
- 28. 重命名许多数据帧的多列以动态的方式R中
- 29. 重命名数据库中的所有表格
- 30. 在Doctrine 2中重命名字段而不丢失数据
该字段是否有约束?一个或多个数据库中的表? –
一次一个数据库是好的。没有限制。 –