日期:2014-05-18  浏览次数:20627 次

想把tempdb保存到ramdisk。。。。。。。。。
开始,因为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:盘有所有权限(除了“特别的权限”是灰色无法选中)

------解决方案--------------------
沙发,up...........
------解决方案--------------------
fat32 最大4G
------解决方案--------------------
理论上,这么做是没必要的

sql server会自动分配内存,临时表在内存足够的情况下是放在内存的。

------解决方案--------------------
探讨
开的ramdisk才2G,tempram文件才设了128M,最多512M
后来已经转为ntfs了

以前sql6.5据说有把tempdb放在内存的选项,7以后反而没有了

------解决方案--------------------
TEMPDB的文件数据最好和CPU的颗数对应,分配到不同的磁盘上,性能提高的比较彻底一点。
------解决方案--------------------
错误提示好像还是显示磁盘格式的问题..
------解决方案--------------------
探讨
主要是希望把对tempdb写操作引发的写盘行为完全消化
这里会快一些,而且硬盘读写的次数也因此减少

因为系统的服务器最近换了一个16G内存的,因为应用数据不算多,dbms一般都只能使用4G左右(启用了awe)
想利用得彻底一些

------解决方案--------------------
本身数据不大或是用到的数据量不大,占不到最小内存也正常.

------解决方案--------------------
将sql server 服务帐号更改为指定一个本地管理员帐号试试(从配置管理器修改,不要从services.msc修改)。
------解决方案--------------------
探讨
引用:开的ramdisk才2G,tempram文件才设了128M,最多512M 后来已经转为ntfs了 以前sql6.5据说有把tempdb放在内存的选项,7以后反而没有了
6.5不是有把tempdb放在内存的选项,而是必须放在内存,但是就不能太大了

你的做法等于是强制将内存给sql server使用,可以考虑设置sql server的最小内存为一个合适的数就可以了

注意将太多内存给sql server并不一定提高速度,因为sql server要正常运行也需要其它的资源,比如网络,极端的,内存全部给sql server的结果是sql server不能运行,因为没有其他的支持。


------解决方案--------------------
探讨
日志对应有:

消息
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。

------解决方案--------------------
http://topic.csdn.net/u/20090313/10/E90163F0-E36C-43A7-81D1-4095C33A5A3E.html
------解决方案--------------------
我试了下,local system也可以成功。没遇到楼主的问题。
------解决方案--------------------