我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQLServer 错误 17204 %ls:无法打开文件号 %d 的文件 %ls。 操作系统错误: %ls。 故障 处理 修复 支持远程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQLServer 错误 17204 %ls:无法打开文件号 %d 的文件 %ls。  操作系统错误: %ls。 故障 处理 修复 支持远程

详细信息

Attribute
产品名称 SQL Server
事件 ID 17204
事件源 MSSQLSERVER
组件 SQLEngine
符号名称 DBLKIO_DEVOPENFAILED
消息正文 %ls:无法打开文件号 %d 的文件 %ls。 操作系统错误: %ls。

说明

SQL Server 由于指定的 OS 错误而无法打开指定的文件。

当 SQL Server 无法打开数据库和/或事务日志文件时,Windows 应用程序事件或 SQL Server 错误日志中可能会出现错误 17204。 此错误如以下示例所示:

Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file c:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\data\MyDB_Prm.mdf for file number 1.  OS error: 5(Access is denied.).

在 SQL Server 实例启动过程中,或在尝试启动数据库的任何数据库操作(如 ALTER DATABASE)期间,都可能看到这些错误。 在某些情况下,你可能会看到 17204 和 17207 错误,而在其他情况下,你可能只会看到其中一种错误。

如果用户数据库遇到这些错误,该数据库将处于 RECOVERY_PENDING 状态,并且应用程序无法访问数据库。 如果系统数据库遇到这些错误,则 SQL Server 实例将不会启动,并且你无法连接到 SQL Server 的此实例。 系统数据库故障也可能导致 SQL Server 故障转移群集资源脱机。

原因

在使用任何 SQL Server 数据库之前,必须启动数据库。 数据库启动过程涉及以下几个步骤:

  1. 初始化代表数据库和数据库文件的各种数据结构
  2. 打开属于数据库的所有文件
  3. 对数据库运行恢复

SQL Server 使用 CreateFile Windows API 函数打开属于数据库的文件。

消息 17204(和 17207)指示 SQL Server 尝试在启动过程中打开数据库文件时遇到错误。

这些错误消息包含下列信息:

  1. 尝试打开文件的 SQL Server 函数的名称。 通常在这些错误消息中看到如下函数名称:

    • FCB::Open – 在 SQL Server 尝试打开文件时遇到错误
    • FileMgr::StartPrimaryDataFiles – 主数据文件或属于主文件组的文件
    • FileMgr::StartSecondaryDataFiles – 属于辅助文件组的文件
    • FileMgr::StartLogFiles – 事务日志文件
    • STREAMFCB::Startup – SQL FileStream 容器
    • FCB::RemoveAlternateStreams
  2. 状态信息,用于区分可生成此错误消息的函数中的多个位置

  3. 文件的完整物理路径

  4. 对应于文件的文件 ID

  5. 操作系统错误代码和错误说明。 在某些情况下,只会看到错误代码。

在这些错误消息中输出的操作系统错误信息是导致错误 17204 的根本原因。 这些错误消息的常见原因是权限问题或文件路径不正确。

用户操作

  1. 要解决错误 17204,需要了解关联的操作系统错误代码并诊断该错误。 解决了操作系统错误后,可以尝试重新启动数据库(例如,使用 ALTER DATABASE SET ONLINE)或 SQL Server 实例,使受影响的数据库处于联机状态。 在某些情况下,可能无法解决操作系统错误。 如果是这样,就必须采取具体纠正措施。 本节将介绍这些操作。

  2. 如果 17204 错误消息仅包含错误代码,而不包含错误说明,则可以尝试使用操作系统 shell 中的 命令解决错误代码:net helpmsg <错误代码> 。 如果收到的错误代码是一个 8 位数状态代码,可以参考如何将 HRESULT 转换为 Win32 错误代码?之类的信息源解码这些状态代码,了解它们在操作系统中都代表什么错误。

  3. 如果收到 Access is Denied 操作系统错误 = 5,请考虑使用以下方法:

    • 通过在 Windows 资源管理器中查看文件的属性,检查文件的权限设置。 SQL Server 使用 Windows 组对各种文件资源预配访问控制。 确保相应的组[名称类似于 SQLServerMSSQLUser$ComputerName$MSSQLSERVER 或 SQLServerMSSQLUser$ComputerName$InstanceName]具有对错误消息中提及的数据库文件的必要权限。 有关更多详细信息,请参阅配置数据库引擎访问的文件系统权限。 确保 Windows 组实际包含 SQL Server 服务启动帐户或服务 SID。

    • 查看当前正在运行 SQL Server 服务的用户帐户。 可以使用 Windows 任务管理器来获取此信息。 查找可执行文件“sqlservr.exe”的“用户名”值。 另外,如果你最近更改了 SQL Server 服务帐户,请注意,支持执行此操作的方法是借助 SQL Server 配置管理器实用工具。 有关详细信息,请参阅 SQL Server 配置管理器。

    • 根据在服务器启动期间打开数据库、附加数据库、还原数据库等操作类型,用于模拟和访问数据库文件的帐户可能会有所不同。 请查看保护数据和日志文件主题,了解哪些操作为哪些帐户设置了哪些权限。 使用 Windows SysInternals 进程监视器这样的工具,了解是否在 SQL Server 实例服务启动帐户[或服务 SID] 或模拟帐户的安全上下文中执行了文件访问。

      如果 SQL Server 正在模拟可执行 ALTER DATABASE 或 CREATE DATABASE 操作的用户的凭据,你将在进程监视器工具中注意到以下信息(例如):

      Date & Time:      3/27/2010 8:26:08 PM
      Event Class:        File System
      Operation:          CreateFile
      Result:                ACCESS DENIED
      Path:                  C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\attach_test.mdf
      TID:                   4288
      Duration:             0.0000366
      Desired Access:Generic Read/Write
      Disposition:        Open
      Options:            Synchronous IO Non-Alert, Non-Directory File, Open No Recall
      Attributes:          N
      ShareMode:       Read
      AllocationSize:   n/a
      Impersonating: DomainName\UserName
      
  4. 如果遇到 The system cannot find the file specified OS 错误 = 3:

    • 查看错误消息中的完整路径
    • 确保磁盘驱动器和文件夹路径可见并可从 Windows 资源管理器访问
    • 查看 Windows 事件日志,以确定此磁盘驱动器是否存在任何问题
    • 如果路径不正确并且该数据库已经存在于系统中,则可以使用移动数据库文件主题中所述的方法更改数据库文件路径。 你可能必须使用此过程,尤其是对于遇到 17204 或 17207 的系统数据库文件,并且你正在使用指定磁盘驱动器不可用的灾难恢复方案。 本主题还介绍了如何识别各种系统数据库[master、model、tempdb、msdb 和 mssqlsystemresource]的当前位置。
    • 如果由于缺少数据库文件而出现此错误,则必须从有效备份还原数据库。
      • 如果与错误关联的数据库文件属于辅助文件组,则可以选择将该文件组标记为脱机,使数据库联机,然后单独执行该文件组的还原。 有关详细信息,请参阅主题 ALTER DATABASE 文件和文件组选项 (Transact-SQL) 的脱机部分。
      • 如果产生错误的文件是一个事务日志文件,请查看主题 CREATE DATABASE (Transact-SQL) 中“FOR ATTACH”和“FOR ATTACH_REBUILD_LOG”部分下的信息,以了解如何重新创建丢失的事务日志文件。
    • 在 SQL Server 尝试访问这些位置上的数据库文件之前,请确保任何磁盘或网络位置[如 iSCSI 驱动器]可用。 如果需要,请在群集管理员或服务控制管理器中创建所需的依赖项。
  5. 如果遇到 The process cannot access the file because it is being used by another process 操作系统错误 = 32:

    • 使用 Windows Sysinternals 中的进程资源管理器或句柄之类的工具来确定其他进程或服务是否已获取此数据库文件的排他锁
    • 阻止该进程访问 SQL Server 数据库文件。 常见示例包括防病毒程序(请参阅以下知识库文章中的文件排除指南)
    • 在群集环境中,确保前一个所属节点中的 sqlservr.exe 进程实际上已经将句柄释放到数据库文件。 通常不会发生这种情况,但群集或 I/O 路径的错误配置可能会导致此类问题。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQLServer 错误 17204 %ls:无法打开文件号 %d 的文件 %ls。 操作系统错误: %ls。 故障 处理 修复 支持远程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQLServer 错误 17204 %ls:无法打开文件号 %d 的文件 %ls。 操作系统错误: %ls。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 17204 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBLKIO_DEVOPENFAILED 消息正文 ...
SQLServer 错误 17204 %ls:无法打开文件号 %d 的文件 %ls。  操作系统错误: %ls。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 5120 表错误:无法打开物理文件 “%.*ls”。 操作系统错误 %d: “%ls”。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 5120 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DSK_FCB_FAILURE 消息正文 ...
SQLServer 错误 5120 表错误:无法打开物理文件 “%.*ls”。 操作系统错误 %d: “%ls”。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 17053 %ls:遇到操作系统错误 %ls。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 17053 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 OS_ERROR 消息正文 ...
SQLServer 错误 17053 %ls:遇到操作系统错误 %ls。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 3271 在文件 “%ls:” 上发生不可恢复的 I/O 错误: %ls。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 3271 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DMPIO_IO_ERROR 消息正文 ...
SQLServer 错误 3271 在文件 “%ls:” 上发生不可恢复的 I/O 错误: %ls。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 5515 无法打开 FILESTREAM 文件的容器目录“%.*ls”。 操作系统返回 Windows 状态代码 0x%x。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 MSSQLSERVER 事件 ID 5515 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 FS_OPEN_CONTAINER_FAILED ...
SQLServer 错误 5515 无法打开 FILESTREAM 文件的容器目录“%.*ls”。 操作系统返回 Windows 状态代码 0x%x。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 50000 尝试从文件“%.*ls”中读取内容时出现网络错误。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 产品版本 11.0 事件 ID 50000 事件源 SETUP 组件 SQL Server Native Client 符号名称 ...
SQLServer 错误 50000 尝试从文件“%.*ls”中读取内容时出现网络错误。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 916 服务器主体 “%.*ls” 无法在当前安全上下文下访问数据库 “%.*ls”。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 916 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 NOTUSER 消息正文 ...
SQLServer 错误 916 服务器主体 “%.*ls” 无法在当前安全上下文下访问数据库 “%.*ls”。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 4104 无法绑定由多个部分组成的标识符 “%.*ls”。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 4104 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 ALG_MULTI_ID_BAD 消息正文 ...
SQLServer 错误 4104 无法绑定由多个部分组成的标识符 “%.*ls”。 故障 处理 修复 支持远程
2023-11-04

SQLServer 错误 7906 数据库错误:文件 FILE 不是有效的文件流文件。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 7906 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBCC2_FS_INVALID_TOP_LEVEL_FILE ...
SQLServer 错误 7906 数据库错误:文件 FILE 不是有效的文件流文件。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33085 无法在加密提供程序库“%.*ls”中找到一个或多个方法。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33085 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 ...
SQLServer 错误 33085 无法在加密提供程序库“%.*ls”中找到一个或多个方法。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33128 加密失败。 密钥使用了不推荐使用的算法“%.*ls”,这不再受支持。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33128 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SEC_DEPRECATED_ALGO 消息正文 ...
SQLServer 错误 33128 加密失败。 密钥使用了不推荐使用的算法“%.*ls”,这不再受支持。 故障 处理 修复 支持远程
2023-11-04

SQLServer 错误 7908 表错误:分区 ID PN_ID 中的文件 FILE 不是有效的 Filestream 文件。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 7908 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBCC2_FS_INVALID_COLUMN_LEVEL_FILE ...
SQLServer 错误 7908 表错误:分区 ID PN_ID 中的文件 FILE 不是有效的 Filestream 文件。 故障 处理 修复 支持远程
2023-11-04

SQLServer 错误 1793 由于没有为 FILESTREAM 数据指定分区方案,因此无法删除索引“%.*ls”。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 1793 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 ...
SQLServer 错误 1793 由于没有为 FILESTREAM 数据指定分区方案,因此无法删除索引“%.*ls”。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 2522 无法处理表 O_NAME 的索引 I_NAME,因为文件组 F_NAME 无效。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 2522 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBCC_INDEX_FILEGROUP_IS_INVALID ...
SQLServer 错误 2522 无法处理表 O_NAME 的索引 I_NAME,因为文件组 F_NAME 无效。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 945 由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库“%.*ls”。 有关详细信息,请参阅 SQL Server 错误日志。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 945 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DB_IS_SHUTDOWN 消息正文 ...
SQLServer 错误 945 由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库“%.*ls”。  有关详细信息,请参阅 SQL Server 错误日志。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 2527 无法处理表 O_NAME 的索引 I_NAME,因为文件组 F_NAME 离线。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 2527 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBCC_INDEX_FILEGROUP_IS_OFFLINE ...
SQLServer 错误 2527 无法处理表 O_NAME 的索引 I_NAME,因为文件组 F_NAME 离线。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 5554 单个文件的版本总数已达到文件系统所设置的最大限制。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 MSSQLSERVER 事件 ID 5554 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 FS_MINIVER_OVERFLOW 消息正文 ...
SQLServer 错误 5554 单个文件的版本总数已达到文件系统所设置的最大限制。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 17832 用于打开该连接的登录数据包的结构无效;该连接已关闭。 请与客户端库的供应商联系。%.*ls 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 17832 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SRV_BAD_LOGIN_PKT 消息正文 ...
SQLServer 错误 17832 用于打开该连接的登录数据包的结构无效;该连接已关闭。 请与客户端库的供应商联系。%.*ls 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33027 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33027 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SEC_CRYPTOPROV_CANTLOADDLL ...
SQLServer 错误 33027 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33081 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33081 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SEC_DLL_TRUST_VERIFICATION_FAILED ...
SQLServer 错误 33081 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。  请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程
2023-11-05

编程热搜

目录