首页 > 解决方案 > 如何将包含文件流的 SQL Server 数据库从一台服务器附加到另一台服务器

问题描述

我继承了一个数据库,没有备份。

此数据库是在 SQL Server 2017 (v14) 上创建的,该服务器不再可用。

我有.MDF,.LDFfilestream.hdr文件。

现在我想将此数据库附加到 SQL Server 2017。

如您所料,附加过程失败。

如果我尝试从 Management Studio 附加,我会收到无法找到文件流文件夹的错误。

但是,如果我指向脚本中的文件夹,则会收到文件激活错误。

MyDB_Filestream 文件夹中有两个文件夹,但都是空的。 $FSGC$FSLOG

我错过了什么?

USE MASTER;
GO

 CREATE DATABASE [MyDB] ON 
 ( FILENAME = N'D:\MSSQL14.InstanceName\MSSQL\DATA\MyDB.mdf' ),
 ( FILENAME = N'L:\MSSQL14.InstanceName\MSSQL\Log\MyDB_log.ldf' ),
    
 FILEGROUP [MyFileStream] CONTAINS FILESTREAM DEFAULT 
    
 ( NAME = N'MyFileStream', FILENAME = N'D:\MSSQL14.InstanceName\MSSQL\DATA\MyDB_FileStream' )
    
 FOR ATTACH
    
 GO

标签: sql-servertsql

解决方案


根据另一篇文章,我执行了以下操作来解决此问题:

创建一个与我尝试附加的数据库同名的新数据库。(MDF 和 LDF 名称必须匹配)

使数据库脱机并终止所有连接。

转到新数据库所在的文件夹并删除 MDF 和 LDF 文件。

复制我试图附加的数据库文件,并将它们放入新数据库在被删除之前所在的确切文件夹中。

确保 SQL Server 对粘贴的 DB 文件、MDF、LDF 具有足够的访问权限。

现在在 SSMS 中使数据库重新联机。

我做了上述工作,一切正常。

我立即备份了数据库。


推荐阅读