精灵魅 發表於 2025-10-16 10:12:25

SQL Server修改数据库名称的常用方法

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、 准备工作</a></li><li><a href="#_label1">二、&nbsp;修改数据库名称</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">1. 图形界面修改</a></li><li><a href="#_lab2_1_1">2.&nbsp;ALTER DATABASE</a></li><li><a href="#_lab2_1_2">3. SP_RENAMEDB系统存储过程</a></li></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>一、 准备工作</h2>
<p>改名时如果有其他用户会话连接该数据库会报错,必须先杀掉那些用户会话或使数据库处于单用户模式下再执行。</p>
<p>查询当前有哪些会话连接到这个数据库</p>
<div class="jb51code"><pre class="brush:sql;">SELECT SPID FROM master.dbo.sysprocesses WHERE dbid=DB_ID('Test1');</pre></div>
<p>如果有,执行KILL命令杀掉</p>
<div class="jb51code"><pre class="brush:sql;">KILL SPID</pre></div>
<p>也可以将数据库设置为单用户模式。在数据库属性 -&gt; &ldquo;连接&rdquo;页面 找到&ldquo;限制访问&rdquo;选项,选择SIGLE_USER。</p>
<p style="text-align:center"><img alt="clip_image002" src="https://img.jbzj.com/file_images/article/202510/2025101610084244.png" /></p>
<p>命令行</p>
<div class="jb51code"><pre class="brush:sql;">use master
-- 设置单用户
exec sp_dboption@dbname='OldDbName', @optname= 'Single User',@optvalue= 'TRUE'
-- 恢复多用户
exec sp_dboption@dbname='NewDbName', @optname= 'Single User', @optvalue='FALSE'
GO</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>二、&nbsp;修改数据库名称</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>1. 图形界面修改</h3>
<p style="text-align:center"><img alt="clip_image002" src="https://img.jbzj.com/file_images/article/202510/2025101610084245.gif" /></p>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>2.&nbsp;ALTER DATABASE</h3>
<div class="jb51code"><pre class="brush:sql;">USE master;
GO
ALTER DATABASE Test1 MODIFY NAME = Test;
GO</pre></div>
<p>或者设置为单用户模式再改</p>
<div class="jb51code"><pre class="brush:sql;">ALTER DATABASE db名 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE 旧db名 MODIFY NAME = 新db名;
ALTER DATABASE db名 SET MULTI_USER;</pre></div>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>3. SP_RENAMEDB系统存储过程</h3>
<p>注意:SQL Server 2008后续版本将删除该功能。</p>
<p>语法: sp_renamedb [ @dbname = ] &#39;old_name&#39; , [ @newname = ] &#39;new_name&#39;</p>
<p>例子: 将数据库Test_1的名称修改为Test</p>
<div class="jb51code"><pre class="brush:sql;">use master
go
exec sp_renamedb @dbname='Test_1', @newname='Test';
go</pre></div>
<p>直接利用脚本修改</p>
<div class="jb51code"><pre class="brush:sql;">use master
exec sp_dboption@dbname='OldDbName', @optname= 'Single User',@optvalue= 'TRUE'
exec sp_renamedb@dbname='OldDbName', @newname= 'NewDbName'
exec sp_dboption@dbname='NewDbName', @optname= 'Single User', @optvalue='FALSE'
GO</pre></div>
<p>检查修改成功</p>
<div class="jb51code"><pre class="brush:sql;">SELECT name, database_id FROM sys.databases WHERE name = N'DbName';</pre></div>
頁: [1]
查看完整版本: SQL Server修改数据库名称的常用方法