我现在使用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.