偶发SqlException类11号0(严重错误)

时间:2014-05-22 13:12:19

标签: c# sql-server sql-server-2012

我现在使用SQL-Server 11.0.3128.0已经有一段时间了,通常它只是起作用。

由于某些奇怪的原因,我尝试使用现在几周没有变化的代码从SqlDataReader读取时开始获取SqlExceptions。而且不仅是我,客户也遇到了同样的问题。

我有点不知道怎么调试这个,因为错误信息对我来说没用。发生异常时代码正在从SqlDataReader读取:

using (SqlDataReader rdr = cmd.ExecuteReaderWithEx())
{
  while (rdr.Read())  // <-- the SqlException happens here
  {
    nAllQueryRows = (int)rdr["TotalRowCount"];
    rc.Add(new Datenkey(tabelleID, (long)rdr[1]));
  }
}

SQL-Command是跨多个数据库和视图的搜索:

WITH NumberedList AS 
(
 SELECT ROW_NUMBER() OVER (ORDER BY [Artikel_View].[Key]) AS [RowNum]
 ,[Artikel_View].[Key] 
 ,COUNT(*) OVER () AS [TotalRowCount]
 FROM [MyDatabase].dbo.[Artikel_View]
  WHERE (([Artikel_View].[GeloeschtAm] IS NULL)
 AND (EXISTS (SELECT [Key] FROM [MyDatabase].dbo.[Artikel] WHERE [Artikel_View].[Key] = [Artikel].[Key] AND CONTAINS(*, '"steril"'))
  OR EXISTS (SELECT [Key] FROM [MyDatabase].dbo.[ArtikelLieferanten] WHERE [Artikel_View].[Key] = [ArtikelLieferanten].[ArtikelKey] AND CONTAINS(*, '"steril"'))
  OR EXISTS (SELECT [Key] FROM [MyDatabase].dbo.[ArtikelLager] WHERE [Artikel_View].[Key] = [ArtikelLager].[ArtikelKey] AND CONTAINS(*, '"steril"'))
  OR EXISTS (SELECT [Key] FROM [MyDatabase].dbo.[ArtikelVKPreise] WHERE [Artikel_View].[Key] = [ArtikelVKPreise].[ArtikelKey] AND CONTAINS(*, '"steril"'))
  OR EXISTS (SELECT [Key] FROM [MyDatabase].dbo.[KundenReservierteBestaende] WHERE [Artikel_View].[Key] = [KundenReservierteBestaende].[ArtikelKey] AND CONTAINS(*, '"steril"'))))
 AND  (([Artikel_View].[Nr] LIKE @suchwort1a)
 OR ([Artikel_View].[KatalogNr] LIKE @suchwort1a)
 OR ([Artikel_View].[PZN] LIKE @suchwort1a)
 OR ([Artikel_View].[Hilfsmittelpositionsnummer1] LIKE @suchwort1a)
 OR ([Artikel_View].[HerstellerNr] LIKE @suchwort1a)
 OR ([Artikel_View].[Suchwort1] LIKE @suchwort1a)
 OR ([Artikel_View].[Suchwort2] LIKE @suchwort1a)
 OR ([Artikel_View].[Suchwort3] LIKE @suchwort1a)
 OR ([Artikel_View].[Suchwort4] LIKE @suchwort1a)
 OR ([Artikel_View].[BezeichnungKurz] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.Nr] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.NameVorname] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.KuerzelFuerArtikelNr] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.Suchwort1] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.Suchwort2] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.Suchwort3] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.Suchwort4] LIKE @suchwort1a)
 OR ([Artikel_View].[Lieferanten.LieferantKey.UnsereKdNrBeiLieferant] LIKE @suchwort1a)
 OR ([Artikel_View].[Lager.StandardLagerplatzKey.Kuerzel] LIKE @suchwort1a))
)
SELECT * FROM NumberedList WHERE RowNum BETWEEN 1 AND 100 ORDER BY [Key]

查询有两个参数(是的,第二个参数从未使用过 - 我会试着去除它):

@suchwort1a='plast%'
@suchwort1c='%[^A-z^Ä^Ö^Ü^ä^ö^ü^ß]plast%'

它抛出一个SqlException Class 11 Number 0 LineNumber 0 with(german)text“Fürdenaktuellen Befehl ist ein schwerwiegender Fehleraufgetreten.LöschenSieeventuelle Ergebnisse。” (用英语说“当前命令中的严重错误。丢弃结果”)。

错误确实在客户站点发生,但在我的调试系统上只发生了几次。我不知道这个错误试图告诉我什么。对我来说,似乎SQL Server有内部打嗝。如果我重新运行相同的SQL命令它通常会起作用,所以它似乎是服务器的一些短暂的内部条件导致错误。

我该如何解决这个问题?

[更新] SQL Server错误日志包含状态转储:

2014-05-22 14:00:42.48 spid51      Using 'dbghelp.dll' version '4.0.5'
2014-05-22 14:00:42.49 spid51      ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL11.BSOFT\MSSQL\LOG\SQLDump0003.txt
2014-05-22 14:00:42.49 spid51      SqlDumpExceptionHandler: Process 3772 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
2014-05-22 14:00:42.49 spid51      * *******************************************************************************
2014-05-22 14:00:42.49 spid51      *
2014-05-22 14:00:42.49 spid51      * BEGIN STACK DUMP:
2014-05-22 14:00:42.49 spid51      *   05/22/14 14:00:42 spid 3772
2014-05-22 14:00:42.49 spid51      *
2014-05-22 14:00:42.49 spid51      *
2014-05-22 14:00:42.49 spid51      *   Exception Address = 00007FFA87046E07 Module(sqllang+0000000000BB6E07)
2014-05-22 14:00:42.49 spid51      *   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
2014-05-22 14:00:42.49 spid51      *   Access Violation occurred reading address 000000081C1A4000
2014-05-22 14:00:42.49 spid51      * Input Buffer 255 bytes -
2014-05-22 14:00:42.49 spid51      *                     16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00
[... lots of bytes...]
2014-05-22 14:00:42.49 spid51      *  a s t %            61 00 73 00 74 00 25 00
2014-05-22 14:00:42.49 spid51      *  
2014-05-22 14:00:42.49 spid51      *
2014-05-22 14:00:42.49 spid51      *  MODULE                          BASE      END       SIZE
2014-05-22 14:00:42.49 spid51      * sqlservr                       00007FF79E580000  00007FF79E5BDFFF  0003e000
[... lots of modules...]
2014-05-22 14:00:42.49 spid51      * dbghelp                        000000005C1F0000  000000005C385FFF  00196000
2014-05-22 14:00:42.49 spid51      *
2014-05-22 14:00:42.49 spid51      *     P1Home: 0000000000000018:  
2014-05-22 14:00:42.49 spid51      *     P2Home: 0000000000000004:  
2014-05-22 14:00:42.49 spid51      *     P3Home: 000000081C1A4000:  
2014-05-22 14:00:42.49 spid51      *     P4Home: 000000081C1A02B8:  0000524400000001  0000000000000100  000000087D1F8040  0000000000015250  000000084B494040  0000000000000001  
2014-05-22 14:00:42.49 spid51      *     P5Home: 0000000021FCD580:  0000000000000004  0000000821F4B070  0000000821F4A9D0  0000000000000000  0000000821F2A301  0000000821F4B070  
2014-05-22 14:00:42.49 spid51      *     P6Home: 0000000021FCD610:  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000  
2014-05-22 14:00:42.49 spid51      * ContextFlags: 000000000010005F:  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000  
2014-05-22 14:00:42.49 spid51      *      MxCsr: 0000000000001FA0:  
2014-05-22 14:00:42.49 spid51      *      SegCs: 0000000000000033:  
2014-05-22 14:00:42.49 spid51      *      SegDs: 000000000000002B:  
2014-05-22 14:00:42.49 spid51      *      SegEs: 000000000000002B:  
2014-05-22 14:00:42.49 spid51      *      SegFs: 0000000000000053:  
2014-05-22 14:00:42.49 spid51      *      SegGs: 000000000000002B:  
2014-05-22 14:00:42.49 spid51      *      SegSs: 000000000000002B:  
2014-05-22 14:00:42.49 spid51      *     EFlags: 0000000000010216:  
2014-05-22 14:00:42.49 spid51      *        Rax: 0000000000000000:  
2014-05-22 14:00:42.49 spid51      *        Rcx: 00007FFA87046E31:  EBC09F0F30533B49  C09E0F30533B4910  9D0F30533B4907EB  48C7FF0B75C084C0  AEEB08C38348C6FF  5E73F93B410A8B45  
2014-05-22 14:00:42.49 spid51      *        Rdx: 000000081C1A3070:  0000081000000000  0000000000000F60  000000081C1A3FE0  000000081C1A3FE0  0000000000000000  0000000000000000  
2014-05-22 14:00:42.49 spid51      *        Rbx: 000000081C1A4000:  
2014-05-22 14:00:42.49 spid51      *        Rsp: 0000000021FCDBF8:  00007FFA87046C17  0000000821F4AD50  0000000821F4AD00  0000000000000000  0000000821F4B070  000000081C197831  
2014-05-22 14:00:42.49 spid51      *        Rbp: 00007FFA86490000:  0000000300905A4D  0000FFFF00000004  00000000000000B8  0000000000000040  0000000000000000  0000000000000000  
2014-05-22 14:00:42.49 spid51      *        Rsi: 0000000000000608:  
2014-05-22 14:00:42.49 spid51      *        Rdi: 0000000000000608:  
2014-05-22 14:00:42.49 spid51      *         R8: 0000000000000000:  
2014-05-22 14:00:42.49 spid51      *         R9: 0000000000000004:  
2014-05-22 14:00:42.49 spid51      *        R10: 0000000821F4B070:  000000080000003C  000000081C197720  0000000821F0ED00  0000000821F0ED60  000000081C1A0FC0  000000081C1A11E0  
2014-05-22 14:00:42.49 spid51      *        R11: 0000000821F4A9D0:  00007FFA86BA1158  0000000000000000  0000000000000000  0000000000000000  0000000800000000  0000000821F56040  
2014-05-22 14:00:42.49 spid51      *        R12: 0000000000000000:  
2014-05-22 14:00:42.49 spid51      *        R13: 0000000821F2A301:  600000000821F0F4  000000000821F643  E000000000000000  9000007FFA888E22  C000007FFA888E22  0000007FFA888E22  
2014-05-22 14:00:42.49 spid51      *        R14: 0000000821F4B070:  000000080000003C  000000081C197720  0000000821F0ED00  0000000821F0ED60  000000081C1A0FC0  000000081C1A11E0  
2014-05-22 14:00:42.50 spid51      *        R15: 8000000000000001:  
2014-05-22 14:00:42.50 spid51      *        Rip: 00007FFA87046E07:  7705F98341138B48  D8858C8BC1634949  E1FFCD034800BB6E  EBC0940F30533B49  C09C0F30533B4922  9F0F30533B4919EB  
2014-05-22 14:00:42.50 spid51      * *******************************************************************************
2014-05-22 14:00:42.50 spid51      * -------------------------------------------------------------------------------
2014-05-22 14:00:42.50 spid51      * Short Stack Dump
2014-05-22 14:00:42.50 spid51      00007FFA87046E07 Module(sqllang+0000000000BB6E07)
2014-05-22 14:00:42.50 spid51      00007FFA87046C17 Module(sqllang+0000000000BB6C17)
2014-05-22 14:00:42.50 spid51      00007FFA870375CF Module(sqllang+0000000000BA75CF)
2014-05-22 14:00:42.50 spid51      00007FFA8702F22B Module(sqllang+0000000000B9F22B)
2014-05-22 14:00:42.50 spid51      00007FFA87015C72 Module(sqllang+0000000000B85C72)
2014-05-22 14:00:42.50 spid51      00007FFA87017DF4 Module(sqllang+0000000000B87DF4)
2014-05-22 14:00:42.50 spid51      00007FFA86FE87EA Module(sqllang+0000000000B587EA)
2014-05-22 14:00:42.50 spid51      00007FFA87029FF6 Module(sqllang+0000000000B99FF6)
2014-05-22 14:00:42.50 spid51      00007FFA8702BF94 Module(sqllang+0000000000B9BF94)
2014-05-22 14:00:42.50 spid51      00007FFA86F7A117 Module(sqllang+0000000000AEA117)
2014-05-22 14:00:42.50 spid51      00007FFA86D10A7D Module(sqllang+0000000000880A7D)
2014-05-22 14:00:42.50 spid51      00007FFA890E643B Module(sqlmin+0000000000BC643B)
2014-05-22 14:00:42.50 spid51      00007FFA88568EF7 Module(sqlmin+0000000000048EF7)
2014-05-22 14:00:42.50 spid51      00007FFA88649D62 Module(sqlmin+0000000000129D62)
2014-05-22 14:00:42.50 spid51      00007FFA886466D2 Module(sqlmin+00000000001266D2)
2014-05-22 14:00:42.50 spid51      00007FFA886481B1 Module(sqlmin+00000000001281B1)
2014-05-22 14:00:42.50 spid51      00007FFA88707952 Module(sqlmin+00000000001E7952)
2014-05-22 14:00:42.50 spid51      00007FFA85793D80 Module(sqldk+0000000000013D80)
2014-05-22 14:00:42.50 spid51      00007FFA85793B64 Module(sqldk+0000000000013B64)
2014-05-22 14:00:42.50 spid51      00007FFA85793967 Module(sqldk+0000000000013967)
2014-05-22 14:00:42.50 spid51      00007FFA857B2F0F Module(sqldk+0000000000032F0F)
2014-05-22 14:00:42.50 spid51      00007FFA857B3750 Module(sqldk+0000000000033750)
2014-05-22 14:00:42.50 spid51      00007FFA857B2C5D Module(sqldk+0000000000032C5D)
2014-05-22 14:00:42.51 spid51      00007FFA857B3F88 Module(sqldk+0000000000033F88)
2014-05-22 14:00:42.51 spid51      00007FFA916116AD Module(KERNEL32+00000000000016AD)
2014-05-22 14:00:42.51 spid51      00007FFA937F4629 Module(ntdll+0000000000074629)
2014-05-22 14:00:42.53 spid51      Stack Signature for the dump is 0x000000014CD388CE
2014-05-22 14:00:43.25 spid51      External dump process return code 0x20000001.
External dump process returned no errors.

1 个答案:

答案 0 :(得分:0)

你在运行SQL 2005吗?这听起来像这个错误:http://support.microsoft.com/kb/938102