日期:2014-05-17  浏览次数:20695 次

sql server 临时文件 位置更改 导致的问题
我将临时数据库和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_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 文件从其原始位置中删除。

------解决方案--------------------
你把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 文件从其原始位置中删除。