【发布时间】:2015-08-20 00:44:08
【问题描述】:
我有一个名为“ip_ent_site”的数据库。例如,我想将其重命名为“ip_ent_site1”。
我已经右键单击并重命名,它一直失败。 这是错误信息:
有人可以帮忙吗?
【问题讨论】:
-
@JasonClark - 我认为您的链接链接回此页面...
标签: sql sql-server tsql ssms
我有一个名为“ip_ent_site”的数据库。例如,我想将其重命名为“ip_ent_site1”。
我已经右键单击并重命名,它一直失败。 这是错误信息:
有人可以帮忙吗?
【问题讨论】:
标签: sql sql-server tsql ssms
重命名前,将数据库设置为单用户模式MSDN
USE master;
GO
ALTER DATABASE ip_ent_site
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
然后重命名
USE master
GO
ALTER DATABASE ip_ent_site
Modify Name = ip_ent_site1
GO
然后放回多用户模式
ALTER DATABASE ip_ent_site1
SET MULTI_USER;
【讨论】:
执行系统过程sp_who2 找出使用数据库的会话,然后关闭应用程序或使用kill 命令杀死会话。
【讨论】:
那是因为有未结交易。如果这些事务可以被杀死,那么这可以很容易地用这个 SQL 完成
ALTER DATABASE ip_ent_site
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
sp_rename 'ip_ent_site', 'new_db_name' ,'DATABASE';
GO
ALTER DATABASE new_db_name
SET MULTI_USER
GO
【讨论】:
原因是数据库必须在您重命名数据库时阻止任何其他连接/事务。
获取数据库锁的简单脚本:
ALTER DATABASE [ip_ent_site] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [ip_ent_site] MODIFY NAME = [ip_ent_site_new]
GO
ALTER DATABASE [ip_ent_site_new] SET MULTI_USER;
GO
【讨论】:
这是重命名数据库名称的最简单方法。只需确保在运行此命令之前已关闭所有查询窗口即可。
EXEC sp_renamedb 'old_Name', 'new_Name'
【讨论】:
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER DATABASE MODIFY NAME instead.
启用功能
右键重命名
数据库:
【讨论】:
使用查询重命名 SQLDatabase 名称
使用[主] 去
Alter Database Old_database_name Modify name = New_database_name
或
sp_renameDB 'old_dbname' , 'new_dbname'
【讨论】:
执行下面的查询
使用大师;
去
sp_renamedb @dbname = 'old_name' , @newname = 'new_name'
【讨论】:
难道我们不应该也更改“逻辑文件名”吗?
ALTER DATABASE [testdb] MODIFY FILE (NAME=N'testdbold ', NEWNAME=N'testdb')
GO
ALTER DATABASE [testdb] MODIFY FILE (NAME=N'testdbold', NEWNAME=N'testdb_log')
GO
【讨论】:
请试试这个,它会工作的。
ALTER DATABASE GWPRD_CMCC --old 数据库名称
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
去 ALTER DATABASE GWPRD_CMCC --old 数据库名称
MODIFY NAME = GWPRD_CMCC_1 --new db name
去 ALTER DATABASE GWPRD_CMCC_1 --新数据库名称 设置多用户 去吧
【讨论】:
离线数据库
USE [master];
GO
--Disconnect all existing session.
ALTER DATABASE Datatbase_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
--将数据库更改为离线模式。 ALTER DATABASE Datatbase_Name SET OFFLINE 要重命名物理数据库文件,请使用打开 SQL Server Management Studio 文件夹或使用以下脚本
-- 允许更改高级选项。
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
重命名 MDF 文件和日志
ALTER DATABASE [Datatbase_Name] MODIFY FILE (Name='Old_Mdf_file_Name', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL13.SQLMS2016\MSSQL\DATA\New_Mdf_file_Name.mdf')
ALTER DATABASE [Datatbase_Name] MODIFY FILE (Name='Old_log_file_Name', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL13.SQLMS2016\MSSQL\DATA\New_log_file_Name.ldf')
EXEC xp_cmdshell 'RENAME "C:\Program Files\Microsoft SQL Server\MSSQL13.SQLMS2016\MSSQL\DATA\Old_Mdf_file_Name.mdf", "New_Mdf_file_Name.mdf"'
GO
EXEC xp_cmdshell 'RENAME "C:\Program Files\Microsoft SQL Server\MSSQL13.SQLMS2016\MSSQL\DATA\Old_log_file_Name.ldf", "New_log_file_Name.ldf"'
GO
ONLINE DATABASE
ALTER DATABASE [Datatbase_Name] SET ONLINE
Go
ALTER DATABASE [Datatbase_Name] SET MULTI_USER
Go
【讨论】: