sys.master_files 中可见的旧 tempdb 文件会阻止在实例启动时创建新的 ndf

问题描述 投票:0回答:1

前一段时间,我注意到我们的一台服务器仍有旧的 tempdb ndf 文件

sys.master_files
。 当然
sys.databases
sys.database_files
是真实的。 问题是,实例重新启动后,不会重新创建 tempdb 的新 ndf 文件,因为
sys.master_files
中的旧 ndf 文件正在阻止它们。 实际上,您可以在服务器启动时在 SQL 日志中找到它: 创建文件在尝试打开或创建物理文件时遇到操作系统错误 3(系统找不到指定的路径。)...

是的,它无法打开路径,因为它不再存在。 前段时间有一个维护窗口,数据库、临时文件和日志被移动到不同的磁盘,因此原始磁盘甚至不再存在。

问题是,我如何从

sys.master_files
更新/删除或清除旧的和未使用的行,因为它不允许临时查询及其系统视频视图。

此外,无法添加磁盘并重新启动 SQL Server 以让它创建 tempdb 文件(然后删除它们),因为它只会需要太多存储空间。

环境正在 SQL Server STD 2016 上运行。

我尝试在测试环境中启用允许更新,但这仍然不允许我在 sys.master_files 上运行查询。 我尝试删除不存在的数据库,但当然你不能删除不再存在的数据库...... 我尝试过重新启动 SQL,但这不会更新视图。 我正在考虑用模板替换 master 数据库,但我太害怕失去 Agent 工作、用户等

sql-server sql-server-2016 tempdb
1个回答
0
投票

您需要停止 SQL Server,然后以最小配置模式从命令行启动它 (

-f
):

<path>\sqlservr.exe -f

然后移动临时数据库文件:

ALTER DATABASE tempdb 
      MODIFY FILE
      (
        NAME = <logical_file_name>,
        FILENAME = '<drive that exists>:\<folder>\<file_name>.ndf'
      );

然后停止服务,然后正常启动。

此外,“允许更新”大约在 20 年前就已被弃用,最后一次在 SQL Server 2000 中起作用。

© www.soinside.com 2019 - 2024. All rights reserved.