gpt4 book ai didi

c# - 重命名数据库并在显示数据库已存在错误中以旧名称创建数据库

转载 作者:行者123 更新时间:2023-12-03 21:52:08 26 4
gpt4 key购买 nike

我正在重命名我的数据库并在显示数据库已存在错误中使用旧名称创建数据库。

use master 

ALTER DATABASE DATABASE1
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE DATABASE1
MODIFY NAME = [DATABASE1_DELETED]

ALTER DATABASE DATABASE1_DELETED
SET MULTI_USER

现在查询正确执行并重命名了数据库,但我再次尝试使用旧名称创建数据库,如下所示:

IF DB_ID('DATABASE1') IS NULL 
CREATE DATABASE [DATABASE1]

现在显示错误:

Msg 5170, Level 16, State 1, Line 1
Cannot create file 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.EASYDIRECT\MSSQL\DATA\DATABASE1.mdf' because it already exists. Change the file path or the file name, and retry the operation.
Msg 1802, Level 16, State 4, Line 1
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

如何使用旧名称创建数据库?

最佳答案

您的 ALTER DATABASE .... 仅重命名 逻辑 数据库名称 - 但 物理文件 仍以旧名称存在( database1.mdfdatabase1.ldf)。因此,您要么也需要重命名物理文件,要么需要创建具有不同文件名的数据库。

所以试试这个:

select * from sys.databases where name like 'Database1%'

现在像以前一样重命名您的数据库 - 再次运行该命令。现在您应该会看到 Database1_Deleted 的条目,对吗?

现在运行这个命令:

select * from sys.database_files where name like 'Database1%'

我敢打赌,您现在看到两个条目 - 一个用于 Database1_Deleted,另一个用于 Database1_Deleted_log - 但两者仍在引用 Database1.mdfDatabase1.ldf 分别 - 正确吗?

所以要解决这个问题,您需要重命名物理文件:

ALTER DATABASE Database1
MODIFY FILE (NAME = Database1_Deleted,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.EASYDIRECT\MSSQL\DATA\Database1_Deleted.mdf')
GO

ALTER DATABASE Database1
MODIFY FILE (NAME = Database1_Deleted_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.EASYDIRECT\MSSQL\DATA\Database1_Deleted_Log.ldf')
GO

您可能需要根据自己的数据库名称和物理文件位置进行调整 - 但您应该明白这一点 - 对吧?

关于c# - 重命名数据库并在显示数据库已存在错误中以旧名称创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com