您的位置:首页 > 数据库

SQL Server 01 修改对象名称

2015-06-26 15:34 281 查看
系统存储过程 sp_rename

procedure [sys].[sp_rename]

@objname nvarchar(1035), – up to 4-part “old” name

@newname sysname, – one-part new name

@objtype varchar(13) = null – identifying the name

参数说明

@objtype 值列表

‘column’(列),

‘database’(数据库),

‘index’(索引),

‘object’ (在 sysobjects 中跟踪的类型的项目。例如,OBJECT 可用来重命名约束(CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、用户表、视图、存储过程、触发器和规则等对象),

‘userdatatype’通过执行 sp_addtype 而添加的用户定义数据类型。

返回值

0 (成功) 、非0(失败)

注意:

每当重命名 PRIMARY KEY 或 UNIQUE 约束时,sp_rename 都会自动为相关联的索引重命名。如果重命名的索引与 PRIMARY KEY 约束相关联,那么 sp_rename 也会自动重命名主键。

重命名视图时,sysobjects 表中有关该视图的信息将得到更新。重命名存储过程时,sysobjects 表中有关该过程的信息将得到更新。

重要 重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。

由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。

权限

sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员或对象所有者可以执行 sp_rename。只有 sysadmin 和 dbcreator 固定服务器角色成员才能将”database”作为 object_type 来执行 sp_rename。

实例:

A. 重命名表

下例将表 customers 重命名为 custs。

EXEC sp_rename ‘customers’, ‘custs’

B. 重命名列

下例将表 customers 中的列col1 重命名为 title。

EXEC sp_rename ‘customers.[col1]’, ‘title’, ‘COLUMN’

C.重命名数据库名:

EXEC sp_renamedb ‘Old_name’,’New_name’;

D.批量更新相似表名称,(需要注意的是 执行sp_rename之后 相对应的游标查询的视图会自动重新生成)

DECLARE @tbl varchar(100),@new varchar(100)

DECLARE cur CURSOR FAST_FORWARD READ_ONLY FOR

SELECT name FROM sys.objects WHERE name LIKE ‘lsgprs%’ AND TYPE=’u’

OPEN cur

FETCH NEXT FROM cur INTO @tbl

WHILE @@FETCH_STATUS = 0

BEGIN

SET @new = ‘bak’ + @tbl

PRINT @new

EXEC sp_rename @tbl, @new

FETCH NEXT FROM cur INTO @tbl

END

CLOSE cur

DEALLOCATE cur
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql-server