问题描述:
EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE'
EXEC sp_renamedb 'OldDbName', 'NewDbName'
EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE'
这么写对不对啊?那个'Single User'要不要改的
解析:
EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE'
EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE'
这两条语句的意思是将数据库转换为单用户模式和非单用户模式,这样可以避免在重命名数据库的时候有其它用户对数据库进行 *** 作,造成死锁。
所以楼主问问的要不要改的回答应该是否定的,不能改,这是设置数据库选项的关键字。
其实在修改数据库名称之前,如果有用户连接到数据库的话会造成数据库重命名失败,可以先执行
select spid
from master.dbo.sysprocesses
where dbid=db_id('OldDbName')
结果集中显示的是当前连接到数据库OldDbName的连接
比如结果是
79
81
当然,实际值应该不是这两个
然后执行
kill 79
kill 81
关闭已建立的连接,之后再执行
EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE'
EXEC sp_renamedb 'OldDbName', 'NewDbName'
EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE'
上述语句最好都在master数据库中执行。
sql语句重命名表名和列名ylb:sql语句重命名表名和列名返回顶部
一、更改数据库名
sp_renamedb 更改数据库的名称。
语法: sp_renamedb [ @dbname = ] ' old_name ' , [ @newname = ] ' new_name '
参数: [ @dbname = ] ' old_name ' 是数据库的当前名称。old_name 为 sysname 类型,无默认值。
[ @newname = ] ' new_name ' 是数据库的新名称。 new_name 必须遵循标识符规则。new_name 为 sysname 类型,无默认值。
返回代码值: 0 (成功)或非零数字(失败)
权限: 只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行 sp_renamedb。
示例: 下例将数据库 accounting 改名为 financial。
EXEC sp_renamedb ' accounting ' , ' financial '
二、更改表名或列名
sp_rename [ @objname = ] ' object_name ' ,
[ @newname = ] ' new_name '
[ , [ @objtype = ] ' object_type ' ]
A. 重命名表:
下例将表 customers 重命名为 custs。
EXEC sp_rename ' customers ' , ' custs '
B. 重命名列:
下例将表 customers 中的列 contact title 重命名为 title。
EXEC sp_rename ' customers.[contact title] ' , ' title ' , ' COLUMN '
一、未使用的数据库改名方法如下:
1、未使用的数据库改名比较方便,找到你要更改的数据库,右键选择【重命名】。
2、然后将你想要更改的名字写好,然后点击一下旁边的空白栏。
3、然后你就发现数据库的名称已经改好了。
二、使用中的数据库改名方法如下:
1、使用中的数据库你在使用这种方法显然是不合适,你用这种方法更改数据库的名字之后会提示你无法重命名数据库。
2、这时还是同样的右键你要改名的数据库,选择【属性】按钮。
3、然后在数据库属性左侧菜单栏中选择【选项】按钮。
4、然后在【状态】栏目下有一项限制访问选项,默认的是MULTI_USER,意为多用户模式,然后你将其更改为【SINGLE_USER】单用户模式,点击确定即可。
5、然后你在使用上面的方法更改数据库的名称会发现数据库改名成功了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)