SQL Server 2005 tempdb 文件已移动到无效 (SSD) 驱动器。如何验证驱动器,或者如何将文件移回?

SQL Server 2005 tempdb 文件已移动到无效 (SSD) 驱动器。如何验证驱动器,或者如何将文件移回?

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)

布伦特·奥扎尔解释了这一点这里更好的。

相关内容