Tempdb 数据文件消失

Man*_*eld 3 sql-server sql-server-2012 tempdb datafile

我最近将临时数据库文件移到了一个单独的驱动器上(我有两个数据文件和一个日志文件)。

但是,重新启动服务器后,我的第二个数据文件从 gui 上的文件列表和 sp_helpfile 中都消失了。我设法多次重现此行为:我添加了一个新数据文件,看到它同时出现在 gui 和 sp_helpfile 中,并在重新启动服务器后消失。

dbcc checkdb对数据库运行过,它没有返回任何错误。SQL 日志或 Windows 应用程序事件日志中都没有信息。

在做了更多研究之后,我运行了以下查询:

select d.name, m.* from sys.master_files m
inner join sys.databases d 
on (m.database_id = d.database_id)
where d.name like 'tempdb'
order by 1, 2
Run Code Online (Sandbox Code Playgroud)

结果:http : //pastebin.com/Zu5fJ2hU

它显示了四个不同的辅助数据文件,其中没有一个出现在 sp_helpfile 中。如果我尝试使用 SQL Server 不允许使用的任何名称。这些文件都不存在于磁盘上。我的服务器是 SQL 2012 标准版。

Jon*_*gel 5

(将评论合并为答案,因此搜索者更容易使用它。)

这似乎与在移动物理文件的位置时未向数据容器授予适当的权限有关。没有尝试过,我相信这也适用于用户数据库,而不仅仅是tempdb.

我有一个关于如何在此处移动所有系统数据库(不仅仅是tempdb)的旧的但技术上仍然准确的视频,其中包括向新数据容器分配权限的过程。数据库引擎需要对从数据容器根开始的此文件夹、子文件夹和文件的完全控制。

在数据容器上正确设置权限后,应该可以使用ALTER DATABASE ... REMOVE FILE ....