症状
在 Microsoft SQL Server 2016 和2017启动期间,如果用户尝试 若要在启动数据库之前连接到该数据库,用户会话可能会导致 数据库将自动启动。 出现这种情况时,如果数据库包含 FileTable 并启用了 FILESTREAM non_transacted_access ,则数据库级 FileTable 目录在数据库启动后不可访问。 如果您尝试通过文件资源管理器访问文件夹,则可能表明该文件夹是 无效. 从命令提示符运行 "dir" 命令时,它返回 "系统找不到指定的文件"。
此外,你可能会在错误日志中看到指示用户会话触发数据库自动启动的以下错误:
DateTime 登录错误:18456,严重性:14,状态:38。
DateTime 用户 "UserName"的登录登录失败。 原因:无法打开显式指定 的数据库 "DatabaseName"。 [客户端: IPNumber]
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
关于 SQL Server 的累积更新:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
此问题的解决方法是禁用并重新启用数据库的 FILESTREAM non_transacted_access。
ALTER DATABASE [DatabaseName] 通过立即回退设置 SINGLE_USER
ALTER DATABASE [DatabaseName] SET FILESTREAM (NON_TRANSACTED_ACCESS = OFF)
ALTER DATABASE [DatabaseName] SET FILESTREAM (NON_TRANSACTED_ACCESS = FULL)
ALTER DATABASE [DatabaseName] 通过立即回退设置 MULTI_USER
参考
了解 terminology Microsoft 用于描述软件更新的术语。