2011-04-01 60 views
0

我有一个数据库,其中包含两个表,这些表使用存储过程插入数据的并行进程填充数据。 sql服务器实际上使用了所有的物理内存,并且我注意到有些表丢失了数据,当我发现数据时,我发现由于超时错误而没有插入数据,因为我没有对此进行说明。有人告诉我,在这个应用程序,它看起来如下sql server - 使用存储过程使用服务器上所有内存的存储过程的数据库

spid status login hostname blkby dbname command ...... 

738 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 
739 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 
740 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 

现在有这些大约800,我不知道这意味着什么相关的所有交易运行EXEC who2和期待。如果事务被锁定,是否有办法在没有数据问题的情况下结束它们,同时我添加了代码来处理超时错误。我甚至不确定这是否是问题,但是我也应该将锁定超时设置为合理值而不是0默认值。 任何想法赞赏。

回答

1

可能之一:

  • 您不关闭连接
  • 你的交易差的处理

和SQL Server将默认使用最大内存:这是不是泄漏或一个错误。

要检查是否有打开的事务

SELECT * FROM sys.sysprocesses WHERE open_tran > 0 
+0

它表明没有开放transactions..what这是不是意味着,感谢您回应 – vbNewbie 2011-04-01 18:24:35

+0

我认为连接没有被关闭... – vbNewbie 2011-04-01 18:24:58

+0

是值得打开和关闭每个事务的连接数有几百个,下一个事务处理需要3秒才能完成...并且整个过程始终运行 – vbNewbie 2011-04-01 18:32:42

相关问题