天天看点

MS SQL修改数据库名称

在ms sql中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现。

方法一:使用sp_renamedb系统存储过程实现。

语法: sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name'

例子: 我需要将数据库test_1的名称修改为test

<code>use master</code>

<code>go</code>

<code>exec</code> <code>sp_renamedb @dbname=</code><code>'test_1'</code><code>, @newname=</code><code>'test'</code><code>;</code>

有时候执行该脚本,会报如下错误:

消息 5030,级别 16,状态 2,第 1 行

无法用排他锁锁定该数据库,以执行该操作。

出现这种情况,主要是还有其它程序或用户连接数据库,你必须确保没有任何用户正在使用数据库. 可以通过将数据库设置为单用户模式。在数据库属性——》“连接”选择里面找到限制访问“选项,选择sigle_user选项。然后执行上面语句,即可修改数据库名称。

MS SQL修改数据库名称

当然也可以用脚本解决这个问题,查询看看当前有哪些会话连接到这个数据库,如果没有记录,则可直接执行上面脚本。

<code>select</code> <code>spid</code><code>from</code> <code>master.dbo.sysprocesses w</code>

<code>    </code><code>where</code> <code>dbid=db_id(</code><code>'test1'</code><code>);</code>

 否则执行kill命令杀掉这些会话进程。

kill spid

下面这个脚本可以比较好的处理上面问题,不需要你做过多额外操作,直接用脚本完成任务。

<code>use master   </code>

<code>exec</code> <code>sp_dboption  @dbname=</code><code>'olddbname'</code><code>, @optname=</code><code>'single user'</code><code>,@optvalue=</code><code>'true'</code>

<code>exec</code> <code>sp_renamedb  @dbname=</code><code>'olddbname'</code><code>, @newname=</code><code>'newdbname'</code>

<code>exec</code> <code>sp_dboption  @dbname=</code><code>'newdbname'</code><code>, @optname=</code><code>'single user'</code><code>, @optvalue=</code><code>'false'</code>

检查修改成功。

<code>select</code> <code>name</code><code>, database_id</code>

<code>from</code> <code>sys.databases</code>

<code>where</code> <code>name</code> <code>= n</code><code>'dbname'</code><code>;</code>

注意:sql server 2008后续版本的 microsoft sql server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

方法二:使用alter database语句修改数据库名称。

<code>use master;</code>

<code>alter</code> <code>database</code> <code>test1</code><code>modify</code> <code>name</code> <code>= test;</code>

方法三:使用microsoft sql server managment studio管理工具,选中要修改名称的数据test1,单击右键,选择”重命名”;注意如果有其他用户会话连接该数据库则会报错,必须先杀掉那些会话进程或使数据库处于单用户模式下,再执行上面操作,否则会报错。

MS SQL修改数据库名称