尝试将mdf文件附加到localDb会引发错误,至少需要一个文件

Nee*_*rma 17 sql-server sql-server-2014-localdb

这是错误

标题:Microsoft SQL Server Management Studio

服务器'(localdb)\ mssqllocaldb'附加数据库失败.(Microsoft.SqlServer.Smo)

附加信息:

数据库附加至少需要一个文件.(Microsoft.SqlServer.Smo)

我试图将此.mdf数据库文件附加到我的LocalDb实例.如果我也可以使用SQL Server也没关系.我有.ldf文件在同一目录中

Jes*_*sse 22

为了完成起见 - 吉姆的评论解决了(一半)问题并让你前进.

问题的另一半" - 如果你最终想要重命名物理数据库文件怎么办?答案可在此CodeProject帖子中找到.


脚步:

  1. ALTER DATABASE设置新的物理文件名(数据文件和日志文件)
    在SQL Server重新启动或数据库脱机并重新联机之后才会生效

    • ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName', FILENAME = '<Full-Path-Required>\NewDbName.mdf');
    • ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName_log', FILENAME = '<Full-Path-Required>\NewDbName_log.ldf');
  2. ALTER DATABASE再次设置新的逻辑文件名(再次,数据和日志文件)
    立即生效

    • ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName', NEWNAME = 'NewDbName');
    • ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName_log', NEWNAME = 'NewDbName_log');
  3. 脱机并重新联机或重新启动SQL Server

    • 使用SQL Server Management Studio:
      1. 右键单击重命名的数据库,然后单击Take Offline下方Tasks.
      2. 右键单击(脱机)数据库,然后单击Bring Online下方Tasks.
    • 使用T-SQL:
      1. ALTER DATABASE [CurrentName] SET OFFLINE WITH ROLLBACK IMMEDIATE; (将其设置为脱机并断开任何客户端)
      2. ALTER DATABASE [CurrentName] SET ONLINE;

完整代码:

-- Find "CurrentName" (without quotes) and replace with the current database name
-- Find "NewDbName" (without quotes) and replace with the new database name


USE [CurrentName];

-- Change physical file names:
ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName', FILENAME = '<Full-Path-Required>\NewDbName.mdf');
ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName_log', FILENAME = '<Full-Path-Required>\NewDbName_log.ldf');

-- Change logical names:
ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName', NEWNAME = 'NewDbName');
ALTER DATABASE [CurrentName] MODIFY FILE (NAME = 'CurrentName_log', NEWNAME = 'NewDbName_log');

-- Take offline and back online
USE [master]
GO
ALTER DATABASE [CurrentName] SET OFFLINE WITH ROLLBACK IMMEDIATE;
-- Then navigate to <Full-Path-Required> and rename the files
ALTER DATABASE [CurrentName] SET ONLINE;
Run Code Online (Sandbox Code Playgroud)

  • 为我工作,但请注意“NAME = 'CurrentName'”是指文件的逻辑名称,而不是文件名。可以从 SSMS UI 中查看或更改数据库和日志文件的逻辑名称,方法是右键单击数据库,选择属性,然后选择文件选项卡。第一栏。文件名也显示在最右边的列中,但只能通过 SQL 更改,如本答案所示。 (2认同)