我有一个最近添加了 Filestream 数据的 SQL 数据库。现在我们每天对 QA 服务器进行备份/恢复,并且由于我添加了 Filestream 数据,这已经开始失败。所以我修改了“restore”语句以包含“with move”:
RESTORE DATABASE MyDb
FROM DISK = 'c:\somepath\mydb.bak'
WITH RECOVERY, REPLACE,
MOVE 'MyDb' TO 'f:\sql\MyDb.mdf',
MOVE 'MyDb_Log' TO 'f:\sql\MyBb_log.ldf',
MOVE 'MyDb_Filestream' TO 'f:\sql\MyDb_FS', NOUNLOAD, STATS = 10;
但这失败并出现以下错误:
文件“MyDb_Filestream”无法恢复到“f:\sql\MyDb_FS”。使用 WITH MOVE 标识文件的有效位置。
我已经在 Google 上到处寻找解决方案。 这个答案说您需要 3 个单独的 RESTORE DATABASE 语句,但没有说明它们是什么。这里接受的答案表明您需要手动复制整个 Filestream 文件夹,我觉得这很难相信。无论如何,它并不清楚这个过程是什么。
任何人都可以用白痴的分步说明向我说明,应该如何备份包含文件流的数据库,将其复制到另一台服务器并在那里恢复?
谢谢!
我相信这个谜团已经解开了。文档只说 SQL Server 帐户需要对 filestream 文件夹的完全访问权限,但是当我检查谁有权访问主 DATA 文件夹时,我看到 SYSTEM 帐户也有访问权限。我将 FS 文件夹的完全权限授予 SYSTEM 用户,现在我不再收到此错误。