好像64位的SQL 2000对内存管理比较好一点

解决方案 »

  1.   

    sql没有语句控制内存分配,这种情况在用到游标的时候更为明显,我们能做的也就是优化自己的代码,让她少站一点资源了
      

  2.   

    如果你已经确定不在使用这个连接了。那么找到你的进程号,在MASTER库里的SYSPROCESSES里可以找到。然后使用KILL 进程号,杀掉连接。那么这个连接的所有占用资源都会回滚。当然,你的数据操作都保存了。不过你这么做的话,你的程序和服务器的连接就全都中断了。你自己掌握吧。
      

  3.   

    在sql server 2000 中没有直接控制内存分配。我们可以用游标用另外的语言来控制内存
    当然着只是我的设想。我回去实验一下
      

  4.   

    SQL是可以调节控制内存、CPU的占用率,设置以后属于全程占有。但不知道是否要求重启SQL,如果不重启,语句应能实现。
      

  5.   

    DBCC
    记得这个命令有请数据缓存的功能。
    查查怎么用吧。
      

  6.   

    关于MSSQL占用过多内存的问题摘:
     
    经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?
    首先,我们来看看MSSQL是怎样使用内存的。
    最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。
    其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。
    所以用于关联和排序的列上一般需要有索引。
    再其次就是对执行计划、系统数据的存储,这些都是比较小的。我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。
      

  7.   

    楼上的都有问题SQL SERVER的内存使用是如果你使用的内存超过了你设置的最小内存数量,则会一直保持在最小内存的水平上,如果没有超过的话,这过一段时间就会自动释放了。具体设置在你数据库连接的属性里面有设置像你这样的问题,只要把最小内存设置为超过200M就可以了
      

  8.   

    你的数据放在缓存里了,200M应该在你的系统允许sql server允许使用的内存范围内。你的数据既然被sql server缓存起来了,它是不会随便释放的。因为下次读取这批数据时,不再需要Physical I/O 操作了。
    随便说下,我的个人想法而已。:)
      

  9.   

    同意  liuyun2003(流云) 的方法.
      

  10.   

    我这边也有类似问题,而且重新启动sql都没有用,重启机器才行!
      

  11.   

    1.open SQL SERVER ENTERPRISE MANGER--LOCAL SQLSERVER--PROPERTY--MEMORY--Dynamically configure sql server memory--maximum(MB)60%.
    2. CREATRE PROCEDURE USP_PROCNAME WITH RECOMPILE.....
      
      

  12.   

    为什么要释放?这不是编程(跟你是用VC还是VB没有关系)的问题,而是对服务器的设置策略问题。楼上的CrazyFor已经说过了,SQL Server缺省会占用到所有的内存,只保留几兆给系统。如果这台机器是专门的数据库服务器,这样设置没有问题;如果还必须跑别的程序(例如是用来开发的),那么必须设置SQL Server的内存分配方式了,要不然整个内存都会被SQL吞掉。方法:在企业管理器中选择服务器名称,选择Memory选项,就可以设置SQL Server的最大内存、最小内存了。
      

  13.   

    我的机器主要不是用作服务器,数据库仅仅是用来转数据用的,全部是使用bulk into命令将txt文件转到数据库来,所以内存消耗的特别大,我想请问如何设置和控制数据库的内存,或者kill掉数据库的内存
      

  14.   

    你可以将你的具体的语句贴出来么?你是用BULK INSERT,BCP,DTS....
    你可以试试将数据库的恢复模式该为简单(不记录日志):
    ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
      

  15.   

    可以能过用 min/max server memory 来控制内存的使用。max server memory 设置必须与 Windows NT 4.0 虚拟内存大小一起进行调整,以便使得保留给全文检索的虚拟内存是物理内存的 1.5 倍(不包括计算机中其它服务所需的虚拟内存)。应这样配置 应这样配置 SQL Server max server memory 选项,使得留有足够的虚拟内存满足全文检索内存需求。全部虚拟内存 -(SQL Server 最大虚拟内存 + 其它服务需要的虚拟内存)>= 1.5 倍物理内存。