C# 在sql server 2008 R2上运行的进程,spid=-2
在Sql Server 2008 R2 SP2上,我无法删除数据库。 错误是:数据库正在使用中 在活动监视器中,我什么也没看到 运行DBCC OPENTRAN时,我看到一个SPID为13s的活动事务。因为“s”我无法杀死它似乎是一个系统事务 以下是命令DBCC opentran的结果:C# 在sql server 2008 R2上运行的进程,spid=-2,c#,sql,sql-server-2008-r2,C#,Sql,Sql Server 2008 R2,在Sql Server 2008 R2 SP2上,我无法删除数据库。 错误是:数据库正在使用中 在活动监视器中,我什么也没看到 运行DBCC OPENTRAN时,我看到一个SPID为13s的活动事务。因为“s”我无法杀死它似乎是一个系统事务 以下是命令DBCC opentran的结果: 最早的活动事务: SPID(服务器进程ID):35s UID(用户ID):-1 名称:脱机索引生成 LSN:(4082851:348:145) 开始时间:2014年7月25日下午4:06:51:260 SID:0
最早的活动事务:
SPID(服务器进程ID):35s
UID(用户ID):-1
名称:脱机索引生成
LSN:(4082851:348:145)
开始时间:2014年7月25日下午4:06:51:260
SID:0x0
syslockinfo lokk的内容如下:
rsc_text rsc_bin rsc_valblk rsc_dbid rsc_indid rsc_objid rsc_type rsc_flag req_mode req_status req_refcnt req_cryrefcnt req_lifetime req_spid req_ecid req_ownertype req_transactionID req_transactionUOW
-------------------------------- ---------------------------------- ---------------------------------- -------- --------- ----------- -------- -------- -------- ---------- ---------- ------------- ------------ ----------- ----------- ------------- -------------------- ------------------------------------
0x00000000000000000000000016000200 0x00000000000000000000000000000000 22 0 0 2 0 3 1 1 0 0 -2 0 4 0 00000000-0000-0000-0000-000000000000
0x00000000000000000000000016000200 0x00000000000000000000000000000000 22 0 0 2 0 3 1 1 0 0 122 0 4 0 00000000-0000-0000-0000-000000000000
如果我用其他namre备份和恢复该数据库,我会遇到同样的问题。所以我想这与未限制的事务有关。当然无法缩小不断增长的原木
每次我们使用使用Microsoft.SqlServer.Management.Smo的C#客户端应用程序时,这个问题似乎都会发生。SPID-2是一个孤立的DTC事务 您可以通过以下查询找到有关SPID-2的信息(UOW编号或工作单元编号):
select req_transactionUOW
from master..syslockinfo
where req_spid = -2
通常情况下,您无法终止此类进程,因此需要UOW id来完成此操作
以下命令可用于终止GUID号为上述查询找到的工作单元ID的进程
KILL 'C2645B98-2962-4c3e-83AC-8A5626A0C0A3'
下面是一些关于sql server中的负spid ID的有趣阅读
您是否在SMO驱动的C#应用程序中使用事务?您是否正确地关闭和处理事务和连接?我不使用显式事务,所有连接都在using块中使用。我还必须说,sql 2005上的一切都运行得很好。我认为即使连接在使用块中,仍然有可能保持打开状态,特别是当某些东西仍然需要使用资源时。mungea05,您能否给出一个示例(请允许我提醒您,代码在SQL2005上运行没有任何问题)。是否可以链接到SMO库的版本?请在问题中添加其他信息,目前很难找出问题所在。代码示例库版本等将有助于或指示smo应用程序上正在执行的操作。嗨,OOW id总是guid为空。顺便说一句,DTC事务UI不显示任何信息。我还尝试停止DTC服务,但没有效果。syslockinfo表返回什么返回2行。第一个似乎是我与Sql Management studio之间的联系。我使用了上面的第二个,因为它更具可读性。你的c#应用程序一定做了一些错误的事情。你能告诉我们它做了什么吗?我在上面做了一个更新。源数据库中似乎已经存在问题。因此,每次进行备份/恢复时,我们都会重复该问题。问题1是如何删除该孤立事务,问题2是该问题从何而来(从2005年-->2008年开始迁移?)