![SQL Server 2005 tempdb 文件已移动到无效 (SSD) 驱动器。如何验证驱动器,或者如何将文件移回?](https://linux22.com/image/517718/SQL%20Server%202005%20tempdb%20%E6%96%87%E4%BB%B6%E5%B7%B2%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%97%A0%E6%95%88%20(SSD)%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E3%80%82%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%8C%E6%88%96%E8%80%85%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E7%A7%BB%E5%9B%9E%EF%BC%9F.png)
SQL 2005 32 位开发版,所有最新服务包
Windows Server 2003 Standard 64x,所有最新更新
Fusion IO 驱动器
我们在开发服务器上安装了一块新的 80GB SSD 卡,在 tempdb 上运行 ALTER TABLE(起始大小为 10GB)以将这些文件移动到新驱动器,停止 SQL Server,然后尝试重新启动它……但现在 SQL 无法启动,并显示“发生服务特定错误:1814”。Sys.Messages 将 1814 标记为“无法创建 tempdb。您可能没有足够的可用磁盘空间。通过删除 tempdb 驱动器上的其他文件释放更多磁盘空间,然后重新启动 SQL Server。检查事件日志中的其他错误,这些错误可能表明无法初始化 tempdb 文件的原因。”应用程序事件日志显示“FCB::Open:创建或打开文件‘F:\TempDB’时发生操作系统错误 5(访问被拒绝)。诊断并更正操作系统错误,然后重试该操作。”SQL 服务配置为以域帐户运行,并且该帐户是机器上的本地管理员。
我猜想需要在某处配置一些隐身位,以“启用”新驱动器供 SQL Server 使用。您知道这可能是什么吗?
我真正想做的是告诉 SQL 不要在该驱动器上构建 tempdb 文件...但要做到这一点,您必须发出 ALTER DATABASE 来移动文件,但我们无法启动服务来发出该命令。如何在不实际运行实例的情况下移动 SQL Server 2005(命名)实例的 tempdb 文件?(这是 SQL 2005,所以我不能像在 2000 或 7.0 中那样破解主数据库中的表。)
不,我们没有系统数据库的备份。或者说备份会有帮助吗?
答案1
阅读。 错误信息。
它说:
应用程序事件日志包含“FCB::Open:创建或打开文件‘F:\TempDB’时发生操作系统错误 5(拒绝访问)。
您可能需要尝试让某人向您解释“访问被拒绝”;)
我猜想需要在某处配置一些隐身位,以“启用”新驱动器供 SQL Server 使用。您知道这可能是什么吗?
是的,它们被称为安全性。NTFS 在驱动器上有非常详细的安全性。运行 SQL Server(取决于您如何安装它)的用户缺少在驱动器上创建文件所需的权限。SQL Server 没有什么“特别”的 - 这是简单、原始、正常的文件系统权限的问题。
SQL 服务配置为作为域帐户运行,并且该帐户是计算机上的本地管理员
好吧,除了是本地管理员(无关紧要,强烈建议不要这样做 - 非常强烈)之外,请检查此帐户是否真的可以创建相关文件(或类似名称的文件)。如果不能(文件系统权限),那就是问题所在。我敢打赌。
话虽如此,我一般会质疑是否要使用 SSD 来存储 tempdb 文件。99% 的情况下,这都是在浪费钱。
答案2
问题似乎是由于管理员(不是我,说实话!)输入了错误的文件路径而发生的,尽管我们永远无法确定。他设法以某种方式修复了这个问题,方法是使用 -c 和 -f 开关启动 SQL,然后将文件重新更改为正确的位置。
(抱歉占用了您的时间。我们偶尔会遇到来自同一来源的反复出现的问题。您现在会认为我意识到基本问题对于某些人来说并不基本。)
答案3
听起来你确实破坏了你的系统数据库。一定要备份系统数据库......它们以后在这种时候会派上用场。
http://support.microsoft.com/kb/943635
尝试再次运行 SQL - 然后只需对数据库进行附加即可。
然后当然,确保操作系统识别新的驱动器,并且它已全部格式化并准备就绪 - 并确保运行 sql 的 ID 可以访问该驱动器。
希望有所帮助,祝你好运!
答案4
这可能(有很大可能 =)与一个已知错误有关,即当您使用 ALTER DATABASE 移动 tempdb 时,SQL 服务器会在原始驱动器中而不是在新 SSD 驱动器中查找指定的可用空间(在您的情况下为 10GB)。因此,如果原始驱动器中没有 10GB,它将失败。您应该做的是先使用小尺寸(例如 1MB)将数据库移动到新的 SSD 驱动器,然后再将其重新调整为所需的大小(10GB)
布伦特·奥扎尔解释了这一点这里更好的。