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
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 应用程序的高级Sql注入第1/2页
- sql sever 创建带条件的唯一性索引
- SQL Server2012 数据库恢复(mdf,ldf)
- SQL Server 日期格式转换
- T-SQL
- 触发器实例
- 嵌套查询:相关子查询和非相关子查询
- java jdbc连接sql server2014
- SQL 数据库 学习 025 查询-08 模糊查询 --- 怎样编写模糊查询语句
- SQL 数据库 学习 003 什么是数据库? 为什么需要数据库?是不是所有的软件都是用Sql Server?
- T-SQL Part IX, PIVOT and UNPIVOT
- T-SQL Part VIII: CROSS APPLY, OUTER APPLY
- 创建自动备份数据库
- 【ERROR】The active result for the query contain no fields
- OBJECT_ID参数
- C#从sqlserver中获取数据的方法
- 约束(读书笔记)
- 连接 (读书笔记)
- T-SQL 基本语句 (读书笔记)
- java execute、executeQuery和executeUpdate之间的区别