开始,因为ramdisk是fat32格式,给tempdb添加文件时,总是报错:
标题: Microsoft SQL Server Management Studio
------------------------------更改 对于 数据库“tempdb”失败。 (Microsoft.SqlServer.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.2047.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=更改+Database&LinkId=20476------------------------------
其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------找不到或无法初始化语句中列出的一个或多个文件。
检查文件 'R:\temp\tempram.ndf' 的扇区大小时出现错误。请将此文件移动到可以从中检索扇区大小的本地 NTFS 卷。有关详细信息,请查看 SQL Server 错误日志。 (Microsoft SQL Server,错误: 5009)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=5009&LinkId=20476------------------------------
按钮:确定
------------------------------于是,千辛万苦(因为内存虚拟文件、临时目录都在上面)把ramdisk改为ntfs了
结果还是这样,搜到(http://topic.csdn.net/t/20041228/16/3682856.html,它是启动时报错,我是参加tempdb数据文件时报错)有说是因为权限不够,但是我的sql启动帐号是system,而且的确对r:盘有所有权限(除了“特别的权限”是灰色无法选中)
标题: Microsoft SQL Server Management Studio
------------------------------更改 对于 数据库“tempdb”失败。 (Microsoft.SqlServer.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.2047.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=更改+Database&LinkId=20476------------------------------
其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------找不到或无法初始化语句中列出的一个或多个文件。
检查文件 'R:\temp\tempram.ndf' 的扇区大小时出现错误。请将此文件移动到可以从中检索扇区大小的本地 NTFS 卷。有关详细信息,请查看 SQL Server 错误日志。 (Microsoft SQL Server,错误: 5009)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=5009&LinkId=20476------------------------------
按钮:确定
------------------------------于是,千辛万苦(因为内存虚拟文件、临时目录都在上面)把ramdisk改为ntfs了
结果还是这样,搜到(http://topic.csdn.net/t/20041228/16/3682856.html,它是启动时报错,我是参加tempdb数据文件时报错)有说是因为权限不够,但是我的sql启动帐号是system,而且的确对r:盘有所有权限(除了“特别的权限”是灰色无法选中)
An unexpected error occurred while checking the sector size for file 'R:\temp\tempram.ndf'. Move the file to a local NTFS volume, where the sector size can be retrieved. Check the SQL Server error log for more information.错误: 5177,严重性: 16,状态: 1。
后来已经转为ntfs了以前sql6.5据说有把tempdb放在内存的选项,7以后反而没有了
(即使设了滞后写入,也是会实际写一次的)
这样一来就慢了,而且对硬盘也有磨损
这里会快一些,而且硬盘读写的次数也因此减少因为系统的服务器最近换了一个16G内存的,因为应用数据不算多,dbms一般都只能使用4G左右(启用了awe)
想利用得彻底一些
最大:2147483647M而且,也很难遇到它很快占满最小内存的情况
只有1次不知道做过什么事情,它启动很快占了4G;其它都是几天也占不到4G
哦,这篇让我想起了以前是看到过这个办法(附加)。。彻底忘掉了!谢谢只是不知道对于tempdb,附加的方式行不行。业务库文件放ramdisk(有电池保护也不行,死机不丢数据才行)是不敢的
只敢把tempdb放ramdisk
我的sql启动帐号就是system啊,看了盘、目录的安全权限,都是全部的
2x4核+3x300G
http://www.cndev.org/.imgdb/sn10141/GUID-B732AF5E-A2F4-4AE2-86DA-2D44CD36BFD6.gif
方法如下:
1、检查tempdb的逻辑名字和它的存在位置。可以使用下面语句:
Select name, physical_name
FROM sys.master_files
Where database_id = DB_ID('tempdb');
2、暂停数据库服务.
3、拷贝原来tempdb的文件到新的位置(原来文件位置可以通过上述查询得到)。
3、拷贝完毕后,启动数据库服务。
4、执行如下命令:
USE master;
GO
Alter DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\tempdb\tempdb.mdf');
GO
Alter DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\tempdb\templog.ldf');
GO
在这里,name=tempdev 和templog是tempdb的逻辑名字,FileName='E:\temdb\tempdb.mdf'是tempdb的新位置.
5、最后检查tempdb移动是否成功。需要注意的是最好直接把临时表文件放在RAMDISK的根目录,因为一重启RAMDISK就清空,如果放在目录内启动后目录就没了,SQL服务会出错。——使用上面的做法,是可以把tempdb的路径改到ramdisk了!
但是!!此时使用的还是原来的2个文件,需要重启数据库才生效
一关闭数据库,再开就不行了:
SQL Server (MSSQLSERVER) 服务正在启动 ..
SQL Server (MSSQLSERVER) 服务无法启动。发生服务特定错误: 1814.请键入 NET HELPMSG 3547 以获得更多的帮助。估计还是tempdb的新文件不能被接受!
但是,想再改tempdb为原路径,没机会了!!因为数据库不能启动,无法设置也无法执行sql了!!!幸亏是在临时的测试机上,否则就麻烦了。
这个问题里我都还没重启电脑,(重启电脑的保存脚本是没有问题)
是sqlserver重启时,认为tempdb的数据文件不可使用:日志如下:
正在清除 tempdb 数据库。
后
检查文件 'r:\tempdb.mdf' 的扇区大小时出现错误。请将此文件移动到可以从中检索扇区大小的本地 NTFS 卷。有关详细信息,请查看 SQL Server 错误日志。
接着就是
无法创建 tempdb。可能没有足够的可用磁盘空间。请删除 tempdb 驱动器上的其他文件并重新启动 SQL Server,以释放更多的磁盘空间。请检查事件日志,看其中是否还有其他错误可表明为什么无法初始化 tempdb 文件。情况是:sql2005+win2003,都是32位的企业版。。
ramdisk设为ntfs了,扇区设512或4096都不行
开机后再自动执行一个恢复数据的脚本
这2个基本都没有问题,工作得很好tempdb的问题是文件都还存在,但是就不被接受