我将临时数据库和log的文件指定到 一个ramdisk之后,数据库服务就无法启动了。
报的错误是:
在文件 'S:\temp\tempdb.mdf' 中、偏移量为 0000000000000000 的位置执行 读取 期间,操作系统已经向 SQL Server 返回了错误 38(已到文件结尾。)。SQL Server 错误日志和系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
有没有 方法可以不用启动数据库服务,重新指定一下临时数据库的位置?之后再启动..
------解决方案--------------------
搜索移动TEMPDB数据库
------解决方案--------------------
tempdb数据库保存所有的临时表和临时存储过程,还满足其他的临时存储要求。是一个全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。temp代表数据库在SQL Server每次启动时都重新创建。tempdb数据库不需要特殊权限,临时数据库永远不需要进行备份。你还是重启动下数据库服务吧
------解决方案--------------------
- SQL code
--确定 tempdb 数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。SELECT name, physical_nameFROM sys.master_filesWHERE database_id = DB_ID('tempdb');GO --使用 ALTER DATABASE 更改每个文件的位置。USE master;GOALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');GOALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');GO --停止再重新启动 SQL Server 的实例。--验证文件更改。SELECT name, physical_nameFROM sys.master_filesWHERE database_id = DB_ID('tempdb'); --将 tempdb.mdf 和 templog.ldf 文件从其原始位置中删除。
------解决方案--------------------
你把TEMP文件移动到原来的地方再启动数据库看看。另外你能不能把SQL Server错误日志发出来看一下啊?
更改TEMPDB按照下面的步骤,你是这样操作的吗?
--确定 tempdb 数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
GO
--使用 ALTER DATABASE 更改每个文件的位置。
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');
GO
--停止再重新启动 SQL Server 的实例。
--验证文件更改。
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
--将 tempdb.mdf 和 templog.ldf 文件从其原始位置中删除。