我有一个带有filesteam的SQL Server 2014实例。最近机器感染了病毒,基本上把所有可以修改的文件都解密了,所以SQL Server就坏了。机器管理员给了我们数据库的 .mdf 和 .ldf 文件形式的备份,没有 .bak 文件,他基本上只是保存磁盘上的内容,而不是进行 SQL Server 备份。无论如何,我已经在该机器上安装了一个新的 SQL Server 2014 实例(打开了文件流),我正在尝试附加恢复的 .mdf 文件。如果我使用这个脚本:
CREATE DATABASE [ABC] ON PRIMARY
( NAME = N'ABC', FILENAME = N'D:\SQL Server 2014 2\MSSQL12.SQLEXPRESS2\MSSQL\DATA\ABC.mdf'),
( NAME = N'ABC_log', FILENAME = N'D:\SQL Server 2014 2\MSSQL12.SQLEXPRESS2\MSSQL\DATA\ABC_log.ldf')
FOR ATTACH
我收到以下错误消息:
Msg 3634, Level 16, State 1, Line 5
The operating system returned the error '2(The system cannot find the file specified.)' while attempting 'FsFileHeader::Open' on 'D:\Filestream\ABC.FS'.
Msg 5105, Level 16, State 14, Line 5
A file activation error occurred. The physical file name 'D:\Filestream\ABC.FS' may be incorrect. Diagnose and correct additional errors, and retry the operation.
Msg 1813, Level 16, State 2, Line 5
Could not open new database 'ABC'. CREATE DATABASE is aborted.
所以它基本上试图引用被破坏的文件流的位置(那里的数据被病毒解密)。但是,ABC.FS 文件夹存在,所以我不知道为什么会显示这样的消息。也许它指的是这个文件夹包含的一些文件流文件?如果我删除所有内容并将此文件夹留空,则会引发相同的错误。
我还尝试了另一个脚本,我尝试在其中创建一个新的 Filestream 目录(脚本的其余部分与上面相同):
FILEGROUP [ABC.FS] CONTAINS FILESTREAM DEFAULT
( NAME = N'ABC', FILENAME = N'd:\Filestream2\ABC.FS' )
LOG ON
这给了我以下错误:
Unable to open the physical file "d:\Filestream2\ABC.FS". Operating system error 5: "5(Access is denied.)".
我想我已经添加了所有可能的用户,包括运行 SQL Server 的用户,以完全控制这个文件夹,但这无济于事。
我还要指出,我不想恢复文件流包含的任何数据,这已经不复存在了。我只想能够从 .mdf 文件中附加这个数据库。