SQL Server: 从 .mdf 文件导入数据库?

48

我在本地计算机上有一个 .mdf 文件。

我已经在本地计算机上安装了 SQL Server 2008 Express 和 SQL Management Studio 2008 Express。

请问我该如何将这个 .mdf 文件作为一个新的数据库导入到我的 SQL Server 中呢?

这似乎是一个逐日在全球执行成千上万次的非常普遍的任务,但我无法在 Management Studio Express 中完成它。

我错过了什么吗?

6个回答

35

打开SQL Management Studio Express并登录到要附加数据库的服务器。 在“对象资源管理器”窗口中,右键单击“数据库”文件夹,然后选择“附加...”。“附加数据库”窗口将打开;在该窗口内点击“添加...”,然后导航至您的.MDF文件并单击“确定”。再次单击“确定”以完成附加数据库操作,然后您就完成了。 数据库应可以供使用。


就像daniele3004所说的那样: 非常重要的是,.mdf文件必须位于C:......\MSSQL12.SQLEXPRESS\MSSQL\DATA中。 - call-me
@call-me 要么如此,要么包含 MDF 文件的文件夹需要对 SQL Server 用户帐户具有写入权限。 - Matt
除了具有访问文件夹和mdf文件的权限外,我只是在列表中单击了缺失的ldf文件(它显示为“文件未找到”),然后单击“删除”,将其从列表中删除。然后附加过程就可以正常工作了。 - Manuel Rivera

32

参见:如何:将数据库文件附加到 SQL Server Express

通过 sqlcmd 登录数据库:

sqlcmd -S Server\Instance

然后执行这些命令:

USE [master]
GO
CREATE DATABASE [database_name] ON 
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\<database name>.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\<database name>.ldf' )
 FOR ATTACH ;
GO

6
虽然这与该文章有(间接)关联,但以下是如何在SSMS中完成此操作的步骤(链接:http://msdn.microsoft.com/en-us/library/ms190209.aspx)。 - Dan J

18

执行此操作,请参见下面的图像:

输入图像描述

下一步是添加*.mdf文件,

非常重要,.mdf文件必须位于C:......\MSSQL12.SQLEXPRESS\MSSQL\DATA中

输入图像描述

现在删除日志文件

输入图像描述


1
如果您没有LDF文件,则:
1)将MDF文件放在 C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\ 目录下。
2)在ssms中,转到 Databases -> Attach,并添加MDF文件。它不会让你以这种方式添加,但它会告诉你其中包含的数据库名称。
3)确保您运行ssms.exe的用户具有访问此MDF文件的权限。
4)现在您知道了DbName,请运行
EXEC sp_attach_single_file_db @dbname = 'DbName', 
@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\yourfile.mdf';

参考资料:https://dba.stackexchange.com/questions/12089/attaching-mdf-without-ldf


1
除了@daniele3004上面发布的步骤之外,我还需要以管理员身份打开SSMS,否则它会显示主文件是只读错误。
转到“开始菜单”,导航到SSMS链接,右键单击SSMS链接,选择“以管理员身份运行”。然后执行上述步骤。

1

当在Docker中托管MS SQL时:

version: '3.4'    
services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    container_name: sqlserver
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=Samle123$
    ports:
      - "1433:1433"
    volumes:
      - S:\Database\data:/var/opt/mssql/data

只需要:

  • mdfldf(可选)文件添加到data文件夹中(在这里:S:\Database\data
  • 在SSMS中附加数据库并选择复制的mdf文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接