(4.42)sql server修改数据库名、表名、列名
【1】基本操作
【1.1】修改数据库名:sp_renamedb
Use master; EXEC sp_dboption 'DBNAME_OLD', 'Single User', 'TRUE' --修改数据库名 EXEC sp_renamedb 'DBNAME_OLD', 'DBNAME_NEW' EXEC sp_dboption 'DBNAME_NEW', 'Single User', 'FALSE'
【1.2】修改表名:sp_rename
--下例将表 customers 重命名为 custs。 EXEC sp_rename 'customers', 'custs'
【1.3】修改列名:sp_rename
exec sp_rename '[表名].[列名]','[新列名]'
【2】核心注意事项
【2.1】需要的权限
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员或对象所有者可以执行 sp_rename。
只有 sysadmin 和 dbcreator 固定服务器角色成员才能将"database"作为 object_type 来执行 sp_rename。
【2.2】重命名存储过程、视图、表、字段的区别
(1)重命名存储过程和视图
重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。
由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。
重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。
(2)重命名表、字段
需要刷新视图,以保证select * 等操作,更好的引用表、字段。
--刷新对象定义,可以解决 exec sp_refreshsqlmodule 'SP_2nd' --如果是视图,也可以这样刷新 exec sp_refreshview 'view_name' --批量刷新视图 SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' FROM db_tank.sys.objects AS so WHERE so.type = 'V'