MS SQL 多连接数时修改数据库名称

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

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

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

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

use master

go

exec sp_renamedb @dbname=‘Test_1‘, @newname=‘Test‘;

go

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

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

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

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

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

SELECT SPID FROM master.dbo.sysprocesses W

    WHERE dbid=DB_ID(‘Test1‘);

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

KILL SPID

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

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

检查修改成功。

SELECT name, database_id

FROM sys.databases

WHERE name = N‘DbName‘;

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

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

USE master;

GO

ALTER DATABASE Test1 MODIFY NAME = Test;

GO

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

时间: 2024-11-05 13:29:00

MS SQL 多连接数时修改数据库名称的相关文章

在SQL中修改数据库名称

假设SQL Server 2008中有个数据库test,现在要将其改名为zhy步骤:(1) 分离数据库:打开management studio,找到test数据库-->右键-->任务-->分离(2) 改名:然后到数据库物理路径(例如C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA)下找到test.mdf和test_log.ldf,分别改名为zhy.mdf.zhy_log.ldf(3) 附加数据库:打开

怎样在mysql里面修改数据库名称

怎样在mysql里面修改数据库名称     提供三种方法:1. RENAME DATABASE db_name TO new_db_name这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了.据说有可能丢失数据.还是不要用的好. 2.如果所有表都是MyISAM类型的话,可以改文件夹的名字关闭mysqld把data目录中的db_name目录重命名为new_db_name开启mysqld 3.重命名所有的表CREATE DATABASE new_db_name;RENAM

SQL SERVER 修改数据库名称(包括 db.mdf 名称的修改)

折腾SQL SERVER 2012,弄了一个上午修改数据库名,主要是需要修改db.mdf 和db_log.ldf的名字,总算解决了.在这里记下,以后再要修改了就别忘了. 假设原来数据库名为db,附加数据库为db.mdf和db_log.ldf. 需要改成dbt,及dbt.mdf和dbt_log.ldf. 步骤: 1.首先把原来的数据库进行备份(选择数据库->右键->任务->备份),备份出db.bak文件. 2.右键->任务->还原->数据库,跳出“还原数据库”窗口. 3.

SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称

原来数据库名称为 aa,物理文件名称为 aa.mdf 和 aa_log.ldf: 需要修改数据库名称为 bb,物理文件名称为 bb.mdf 和 bb_log.ldf: 具体操作步骤(以sqlserver2005操作 为例): 把原有数据库进行备份(选择数据库->右键->任务->备份),被分为aa.bak: 新建数据库bb,然后 右键->任务->还原->数据库,选择“源设备”,浏览,跳出“指定备份”对话框,点击添加找到刚才备份的aa.bak: “选择用于还原的备份集”,选

运维进行时-修改数据库密码

从今天起不断分享我在团队中遇到的问题和想法,激励自己和团队不断成长进步. 完事开头难,有想法却不知从何开始-- 就从今晚修改数据库密码开始. 最后一次全量修改数据库密码可以追溯到3年前,连续3年不敢动数据库密码.今年交费系统需要一卡集中,面临未来业务的扩张,数据库的安全性存在隐患了. 对于历史原因不在追溯,为了把数据库密码修改的风险性降到最低,团队花了近一个月的时间对读库.写库.卡库.报表库进行梳理,本着影响最小原则,分四次进行修改,今天已经是第三批次修改. 数据库密码修改规范中应是常态,第一次

【MS SQL】把多个数据库合并为一个新的数据库

因应工作要求,需要把两个数据库合并成一个库: 一开始使用"导入数据.导出数据和复制数据库"三个工具时,没有达到要的效果. 后来,使用"生成脚本"来执行,成功!步骤如下: 1.新建一个空白库 -> SCM_KQYY: 2.选择要合并的数据库-> Materials: 3.这里不表,直接下一步: 4.按下图根据需要选择:表.存储过程.用户.同义词. 5.按下图设置,下一步: 6.下一步: 7.点"完成"按钮: 8.生成后脚本的模样: 9.

MS Sql Server 数据库或表修复

提示数据库处于恢复模式时重建日志文件可以解决 DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasen

MS Sql Server 数据库或表修复(DBCC CHECKDB)

MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasena

修改MySql数据库名称及附带脚本

一. 在开发流程中,我们会部署多环境,其中数据库结构及数据同步是非常重要的一环,为了便于项目复盘,我们往往会保留数据库一段时间,比如类似这样的方式:db_20200210,db_20200220,db_20200229,db_xxxxxxxx,但MySql是不支持直接修改数据库名称的,我们在从阿里云的RDS生产环境同步到仿真环境就遇到这个问题,每次都是直接这样命名,但项目的配置文件配置的数据库名称是db,避免不了要改配置文件,就是用分布式配置,也是多了一个环节,人为的操作是不能保证不出错误的,所