sql-server - 如何将包含文件流的 SQL Server 数据库从一台服务器附加到另一台服务器
问题描述
我继承了一个数据库,没有备份。
此数据库是在 SQL Server 2017 (v14) 上创建的,该服务器不再可用。
我有.MDF
,.LDF
和filestream.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
解决方案
根据另一篇文章,我执行了以下操作来解决此问题:
创建一个与我尝试附加的数据库同名的新数据库。(MDF 和 LDF 名称必须匹配)
使数据库脱机并终止所有连接。
转到新数据库所在的文件夹并删除 MDF 和 LDF 文件。
复制我试图附加的数据库文件,并将它们放入新数据库在被删除之前所在的确切文件夹中。
确保 SQL Server 对粘贴的 DB 文件、MDF、LDF 具有足够的访问权限。
现在在 SSMS 中使数据库重新联机。
我做了上述工作,一切正常。
我立即备份了数据库。
推荐阅读
- php - oauth2-server-php 每次都会创建新令牌
- django - Django:没有 li / * 的表单集错误
- java - 实例化bean osgiBundleScanningSchema时出现Opendaylight氧气错误
- wso2 - 在 APIM Publisher 中使用来自 Single Sign On 的 saml 响应授权用户
- ssh - 如何以 ubuntu 用户身份通过 SSH 连接到 gcloud 计算实例?
- scala - 使用一个服务调用的结果(列表)来获取另一个列表
- javascript - 通过javascript的空白页
- angularjs - Angular 1.6 - 控制器已注册但仍未检测到
- dialogflow-es - 如何从 Dialogflow 中的先前上下文将参数附加到现有参数列表?
- python - Python,嵌套字典元素链接