SQL Server 2005 tempdb文件移动到无效(SSD)驱动器。 如何validation驱动器,或如何移回文件?

SQL 2005 32位开发者版,所有最近的服务包

Windows Server 2003 Standard 64x,所有最近更新

Fusion IO驱动器

我们在我们的开发服务器上安装了一个新的80GB SSD卡,在tempdb(10GB起始大小)上运行ALTER TABLE,将这些文件移动到新的驱动器,停止SQL Server,然后尝试重新启动它…但现在SQL不会以“发生服务特定错误:1814”开始。 Sys.Messages有1814年,因为“不能创buildtempdb,你可能没有足够的磁盘空间,通过删除tempdb驱动器上的其他文件,然后重新启动SQL Server,可以腾出额外的磁盘空间,检查事件日志中可能指出的其他错误为什么tempdb文件不能被初始化。“ 应用程序事件日志具有“FCB :: Open:创build或打开文件”F:\ TempDB“时发生操作系统错误5(访问被拒绝)。诊断并更正操作系统错误,然后重试该操作。 SQL服务被configuration为以域帐户运行,并且该帐户是框中的本地pipe理员。

我的猜测是,某些隐形位需要在“启用”SQL Server使用的新驱动器的某个位置进行configuration。 任何想法可能是什么?

我真正想要做的是告诉SQL不要在该驱动器上构buildtempdb文件…但要做到这一点,你必须发出一个ALTER DATABASE来移动文件,但是我们不能启动服务来发出命令。 如何在不实际运行实例的情况下移动SQL Server 2005(named)实例的tempdb文件? (这是SQL 2005,所以我不能像在2000或7.0中那样在主数据库中破解表)。

不,我们没有备份我们的系统数据库。 或者在这里有帮助?

读。 错误消息。

它说:

应用程序事件日志具有“FCB :: Open:创build或打开文件”F:\ TempDB“时发生操作系统错误5(访问被拒绝)。

你可能想尝试让某人解释你“访问被拒绝”;)

我的猜测是,某些隐形位需要在“启用”SQL Server使用的新驱动器的某个位置进行configuration。 任何想法可能是什么?

是的,他们被称为安全。 NTFS在驱动器上有相当详细的安全性。 运行SQL Server的用户(取决于您是如何安装的)错过了驱动器上所需的权限以创build文件。 没有关于SQL Server的“特殊” – 这是一个简单的,原始的,正常的文件系统权限的问题。

SQL服务被configuration为以域帐户运行,并且该帐户是框中的本地pipe理员

那么,除了本地pipe理员(不相关,强烈不build议 – 认真强烈) – 检查此帐户是否实际上可以创build有问题的文件(或类似名称)。 如果没有(文件系统权限),这是问题。 我打赌。

这就是说 – 我会在一般的问题使用SSD的tempdb文件。 99%的案件严重浪费钱。

当pipe理员(不是我自己,诚实!)进入错误的文件path,似乎发生问题,但我们永远不会知道。 他设法通过用-c和-f开关启动SQL,然后将文件重新更改为正确的位置来修复它。

(抱歉占用你的时间,如果偶尔出现同样的问题,我们会重复发生,现在你应该认识到,基本问题对于一些人来说不是基本问题。

听起来像你做软pipe你的系统dbs。 总是备份系统数据库……他们可以在这样的时间后来派上用场。

http://support.microsoft.com/kb/943635

尝试让sql再次运行 – 然后只是做一个数据库的附加。

那么当然要确保操作系统能够识别新的驱动器,并确保它已经格式化并准备好了,并确保你正在运行sql的ID可以访问该驱动器。

希望有所帮助,祝你好运!

关于系统数据库的备份:master,model,msdb yes。 每次数据库引擎服务重新启动时,Tempdb都会重build,所以我将跳过tempdb。

这可能是一个很大的问题,它与一个已知的bug有关,当你使用ALTER DATABASE移动tempdb时,SQL服务器在原来的驱动器中查找指定的可用空间(在你的情况下是10GB),而不是在新的SSD驱动器中。 所以如果在原来的驱动器中没有10GB的话,就会失败。 你应该做的是将数据库首先移动到新的SSD驱动器使用小尺寸(如1MB),然后重新resize,以您想要的大小(10GB)

布伦特·奥扎尔(Brent Ozar) 在这里解释得更好

不确定你是否已经解决了这个问题,但是这里看起来像SQL正在search文件夹“F:\ TempDB”来重新创build数据文件。 是F:\驱动新的Fusion-IO驱动器? 如果是的话,您是否已经在驱动器上创build了一个文件夹“TEMPDB”,并具有适当的权限以便SQL能够访问它?

SQL将直接尝试访问该文件夹,并不会创build文件夹,如果它不存在…其中可能是你的问题! 希望这可以帮助。

问候Chirag