(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'

参考:查看数据库对象的引用关系,查看数据库对象的依赖关系

原文地址:https://www.cnblogs.com/gered/p/12843054.html