我已经在 64 位虚拟盒上安装了 SQL Server 2008 Express,但服务无法启动。
查看事件日志我得到:
无法创建 tempdb。您可能没有足够的可用磁盘空间。删除 tempdb 驱动器上的其他文件以释放更多磁盘空间,然后重新启动 SQL Server。检查事件日志中是否有其他错误,这些错误可能表明 tempdb 文件无法初始化的原因。
有关详细信息,请参阅帮助和支持中心 http://go.microsoft.com/fwlink/events.asp。
并且:
FileMgr::StartLogFiles: 创建或打开文件“e:\sql10_main_t\sql\mkmastr\databases\objfre\i386\MSDBLog.ldf”时发生操作系统错误 2(无法检索此错误的文本。原因:1815)。诊断并更正操作系统错误,然后重试操作。
注意:mdf 文件也存在类似的错误。
现在奇怪的是,没有 e 驱动器映射到此框,所以我不知道为什么它试图从这里打开文件。不知道这是否与虚拟切片有关,也许主机已映射此驱动器?
欢迎任何建议。
克里斯。
答案1
尝试以下操作(请注意,我是在 2005 Express 上执行此操作的,因此您可能需要根据需要进行调整):
打开控制台并尝试以单用户模式启动:
sqlsvr.exe -m -s <instance_name>
如果它启动了,您现在可以打开管理工作室并尝试以下操作:
-- alter the database
ALTER DATABASE tempdb MODIFY FILE ( NAME = 'tempdev', FILENAME = 'SomeWhere\Here\tempdb.mdf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = 'templog', FILENAME = 'SomeWhere\Here\templog.ldf' )
-- ensure that it has been moved
SELECT name, physical_name as CurrentLocation, state_desc
from sys.master_files
WHERE database_id IN (DB_ID('tempdev'), DB_ID('templog')
现在停止 SQL Server 并尝试从服务控制台重新启动。它应该现已成功启动。
如果确实如此,还请执行以下操作以确保在正确的位置创建新的数据库:
- 打开管理工作室快捷版并登录
- 右键单击您的服务器并选择“属性”
- 点击数据库设置
- 更改默认设置数据库位置您的 VPS 上的内容
这应该会改变默认位置
答案2
希望这对你有帮助...
为了解决此问题,您必须使用下面的命令字符串重建数据库。此命令必须从此目录运行。
C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release
设置 /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[SAPWD=StrongPassword]
如果您使用 Windows 身份验证,则可以像这样放弃命令的强密码部分。
设置 /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts
您可以在以下网址阅读有关该问题的更多信息http://msdn.microsoft.com/en-us/library/dd207003.aspx。希望这可以帮助到别人。