解决:System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用

本文介绍了解决在还原AdventureWorksSampleDataBase时遇到的FILESTREAM功能被禁用的问题。详细说明了如何通过调用sp_configure存储过程正确启用FILESTREAM功能。

还原 AdventureWorks Sample DataBase 时遇到 FILESTREAM feature is disabled 错误提示.

FileStream是SQL Server 2008 新添加的feature, 默认是关闭的. 如果 DB backup 文件启用了这个功能,再另外一台 Server 上还原时也需要 enable 这个feature.

刚开始的时候想通过更改 SQL Server Configuration Manager 打开, 步骤如下:
1> 打开 SQL Server Configuration Manager
2> 找到 SQL Server Services
3> 切换到 FILESTREAM tabe
4> 选中 [Enable FILESTREAM for Transact-SQL access] and [Enable FILESTREAM for file I/O streaming access]
4> 单击 OK 按钮, 重启 SQL Server Services

截图如下:

It does not work, 还原的时候错误依旧.

查了一下 Books-Online, 原来这个配置是用来控制 access 的, 根本是驴唇不对马嘴.

正确的设置方法是调用 sp_configure 存储过程来启用 filestream.

代码如下:

1
2
3
4
5
USE master
GO

EXEC sp_configure filestream_access_level, 2
RECONFIGURE

重新还原数据库, It Works !

遇到问题可以查文档和使用Google,不能想当然的去做.特别是在生产环境中.

疑惑: 在错误的提示窗口中有一个连接到 Microsoft Site 的URL,不过这个url不能用. 难道是过期了么?

System.Data.SqlClient.SqlError: FILESTREAM feature is disabled. (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&LinkId=20476

### System.Data.SqlClient.SqlError 类文档解释 #### 概述 `System.Data.SqlClient.SqlError` 是 .NET Framework 中用于表示 SQL Server 错误的对象。当执行 SQL Server 数据操作时发生异常,此对象会包含有关错误的具体信息。 此类通常作为 `SqlException.Errors` 集合的一部分返回给应用程序开发者。每个 `SqlError` 对象代表单个数据库引擎错误消息[^1]。 #### 属性说明 以下是 `System.Data.SqlClient.SqlError` 的主要属性: - **Class**: 获取错误的严重级别。 - **LineNumber**: 返回导致错误发生的 T-SQL 语句所在的行号。 - **Message**: 提供描述性的错误文本。 - **Number**: 表示特定于 Microsoft SQL Server 的唯一编号。 - **Procedure**: 如果适用,则提供触发错误存储过程的名字。 - **Server**: 显示报告错误的服务器名称。 - **Source**: 给出引发异常的应用程序或组件名。 - **State**: 描述错误状态码的一个整数值。 这些属性有助于诊断和解决问题,使开发人员能够更精确地定位并修复潜在问题[^2]。 #### 常见问题及解决方案 ##### 1. 备份集中的数据库备份与现有数据库不匹配 如果尝试恢复到已有同名但结构不同的数据库上,可能会遇到如下报错:“备份集中的数据库备份与现有的 'cmp' 数据库不同。” 这是因为目标数据库已经存在且其架构版本不同于要还原的数据文件。为了避免这种情况,在进行任何更改之前建议先删除旧版数据库实例再重新创建新副本。 ##### 2. 加载介质格式化支持有限制 另一个常见问题是由于加载介质被配置成仅能处理某些类型的备份而产生的兼容性冲突。“The media loaded on ‘xxx’ is formatted to support…”这样的提示意味着当前使用的磁带或其他存储备份设备可能不具备所需的功能来读取指定格式的备份数据。此时应考虑更换合适的硬件设施或者调整源端设置以确保两者之间的一致性和互操作性。 ##### 3. 文件正在被占用无法覆盖 对于试图直接替换处于活动连接下的 MDF/LDF 文件所引起的“无法覆盖文件…‘UFDATA_001’ 正在使用该文件”的警告来说,最简单的办法就是关闭所有对该数据库的操作请求直至完成迁移工作为止;另外还可以通过附加方式绕过这个问题——即先把新的数据库作为一个独立实体加入进来之后再做必要的结构调整[^3]. ```sql -- 断开所有用户连接 ALTER DATABASE UFDATA_001 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO -- 执行其他命令... RESTORE DATABASE UFDATA_001 FROM DISK = 'path_to_backup_file.bak' WITH REPLACE, MOVE 'LogicalFileName_Data' TO 'new_path_for_data.mdf', MOVE 'LogicalFileName_Log' TO 'new_path_for_log.ldf'; GO -- 将数据库设回多用户模式 ALTER DATABASE UFDATA_001 SET MULTI_USER; GO ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值