当 SQL Server 抛出权限错误(或其他操作系统错误)时,它通常会记录以下形式的内容"Cannot open file {blah}. Operating system error 3 (failed to retrieve text for this message)"
。
这个问题很简单:是什么阻止了 SQL Server 检索错误文本?我假设这是某个地方的权限问题,但我不知道 SQL 使用什么机制将操作系统错误代码转换为实际的文本消息,以便首先真正实现这一点。
笔记:我并不是在问“我该如何修复初始错误”(以防有人误读问题)——而是“我该如何让 SQL Server 成功地将操作系统错误编号转换为文本,这样我就不必一直查找或记住操作系统错误编号的含义”。
这是可能存在的是一个答案,但它被所有询问“操作系统错误是什么意思”的问题淹没了,我找不到正确的谷歌咒语......
答案1
有几个原因可以解释为什么FormatMessage
失败:内存不足、语言环境问题或操作系统安装损坏。OOM 不会导致这种情况总是发生,错误消息会正确显示有时。区域设置不匹配会持续显示此问题,损坏的操作系统安装也是如此。鉴于您的 SQL 错误看起来像美国英语,我假设您的 SQL 安装是美国英语。您的操作系统安装是什么语言?文件夹是否%SystemRoot%\System32\en-US
存在?怎么样%SystemRoot%\SysWOW64\en-US
,SQL 实例是 32 位安装吗?