Obdržet výjimku narušení přístupu při pokusu o použití SQL mail v počítači s více procesory

ID článku: 839405 - Produkty, které se vztahují k tomuto článku.
Chyba č: 471055 (SQL Server 8.0)


Důležité: Tento článek obsahuje informace o úpravě registru. Před úpravami je nutné registr zazálohovat. Seznamte se také s postupem obnovení registru v případě, že nastane problém. Další informace o zálohování, obnovení a úpravě registru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
322756Zálohování a obnovení registru v systémech Windows XP a Windows Vista
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Při pokusu o použití SQL mail v počítači s více procesory SQL Mail pravděpodobně není volání funkce MAPIInitialize a funkce MAPIUninitialize pro každý podproces, který používá volání MAPI API. Proto se může zobrazit výjimku narušení přístupu.

Tomuto problému může dojít při spuštění příkazu HROMADNÉ INSERT Transact-SQL 2000 Microsoft SQL Server databáze, která se spouští v počítači s více procesory a zkopírujte zprávy MAPI do tabulky v databázi SQL Server se pokusí příkaz HROMADNÝ INSERT Transact-SQL.

Po obdržení výjimka narušení přístupu všimnout soubor výpisu zásobníku, který je podobná následující:
* BEGIN STACK DUMP:
*   10/10/03 22:30:02 spid 61
*
*   Exception Address = 77F8910E (RtlEnterCriticalSection + 0000000B Line  0+00000000)
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
*   Access Violation occurred reading address 00C9FF70
* Input Buffer 336 bytes -
*  BULK INSERT [DB1].[dbo].[Table1] FROM 'c:\files.dat'
*  WITH (FORMATFILE = 'c:\files.fmt', MAXERRORS = 10  )
....
-------------------------------------------------------------------------------
* Short Stack Dump
* 77F8910E Module(ntdll+0000910E) (RtlEnterCriticalSection+0000000B)
* 77E12CA8 Module(USER32+00002CA8) (GetSysColor+00000444)
* 77E12DC5 Module(USER32+00002DC5) (GetSysColor+00000561)
* 77E1577D Module(USER32+0000577D) (DispatchMessageA+0000000B)
* 16142BB3 Module(impprov+00002BB3)
* 1614E84A Module(impprov+0000E84A) (DllRegisterServer+0000AA3A)
* 1615145C Module(impprov+0001145C) (DllRegisterServer+0000D64C)
* 1614E1DC Module(impprov+0000E1DC) (DllRegisterServer+0000A3CC)
* 0047FB7B Module(sqlservr+0007FB7B)  (CBcpImport::CreateInprocProvider+000002FA)
* 0047F05A Module(sqlservr+0007F05A) (CBcpImport::Init+0000029D)
* 0047ED54 Module(sqlservr+0007ED54) (BcpImportMain+0000014D)
* 0047EC14 Module(sqlservr+0007EC14) (CStmtBulkIns::XretExecute+0000005F)
* 0041C3CB Module(sqlservr+0001C3CB)  (CMsqlExecContext::ExecuteStmts+000003B9)
* 0041BA11 Module(sqlservr+0001BA11) (CMsqlExecContext::Execute+000001B6)
* 0041B02D Module(sqlservr+0001B02D) (CSQLSource::Execute+00000357)
* 0048DAE8 Module(sqlservr+0008DAE8) (language_exec+000003E1)
* 004292A5 Module(sqlservr+000292A5) (process_commands+0000010E)
* 41072838 Module(UMS+00002838) (ProcessWorkRequests+00000272)
* 410725B3 Module(UMS+000025B3) (ThreadStartRoutine+00000098)
* 78008454 Module(MSVCRT+00008454) (endthread+000000C1)
* 7C4E987C Module(KERNEL32+0000987C) (SetThreadExecutionState+00000227)
*  ----------------------------------------------------------------------------- --



* BEGIN STACK DUMP:
*   01/27/04 22:30:02 spid 62
*
*   Exception Address = 77F8910E (RtlEnterCriticalSection + 0000000B Line  0+00000000)
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
*   Access Violation occurred reading address 197AFF70
* Input Buffer 336 bytes -
*  BULK INSERT [DB1].[dbo].[Table1] FROM 'c:\files.dat'
*  WITH (FORMATFILE = 'c:\files.fmt', MAXERRORS = 10  )
....
* -------------------------------------------------------------------------------
* Short Stack Dump
* 77F8910E Module(ntdll+0000910E) (RtlEnterCriticalSection+0000000B)
* 77E3A2D0 Module(USER32+0002A2D0) (SetWindowPlacement+00000050)
* 77E145E5 Module(USER32+000045E5) (TranslateMessageEx+00000605)
* 77E15B51 Module(USER32+00005B51) (DispatchMessageA+0000000B)
* 15D02BB3 Module(impprov+00002BB3)
* 15D0E84A Module(impprov+0000E84A) (DllRegisterServer+0000AA3A)
* 15D1145C Module(impprov+0001145C) (DllRegisterServer+0000D64C)
* 15D0E1DC Module(impprov+0000E1DC) (DllRegisterServer+0000A3CC)
* 0047FB7B Module(sqlservr+0007FB7B) (CBcpImport::CreateInprocProvider+000002FA)
* 0047F05A Module(sqlservr+0007F05A) (CBcpImport::Init+0000029D)
* 0047ED54 Module(sqlservr+0007ED54) (BcpImportMain+0000014D)
* 0047EC14 Module(sqlservr+0007EC14) (CStmtBulkIns::XretExecute+0000005F)
* 0041C3CB Module(sqlservr+0001C3CB) (CMsqlExecContext::ExecuteStmts+000003B9)
* 0041BA11 Module(sqlservr+0001BA11) (CMsqlExecContext::Execute+000001B6)
* 0041B02D Module(sqlservr+0001B02D) (CSQLSource::Execute+00000357)
* 0048DAE8 Module(sqlservr+0008DAE8) (language_exec+000003E1)
* 004292A5 Module(sqlservr+000292A5) (process_commands+0000010E)
* 41072838 Module(UMS+00002838) (ProcessWorkRequests+00000272)
* 410725B3 Module(UMS+000025B3) (ThreadStartRoutine+00000098)
* 78008454 Module(MSVCRT+00008454) (endthread+000000C1)
* 7C57B382 Module(KERNEL32+0000B382) (lstrcmpiW+000000B7)
* ------------------------------------------------------------------------------

Příčina

K tomuto problému dochází, protože SQL mail nepoužívá příznak MAPI_MULTITHREADED_NOTIFICATIONS ve funkci MAPIInitialize.

Jak potíže obejít

Chcete-li tento problém vyřešit, musíte zapnout
MAPIInitializeFlags
položka registru. Postupujte takto.

Upozornění Při nesprávných úpravách registru pomocí Editoru registru nebo jiným způsobem může dojít k vážným problémům. Tyto problémy mohou vyžadovat přeinstalaci operačního systému. Společnost Microsoft nezaručuje, že tyto problémy bude možné vyřešit. Úpravy registru provádíte na vlastní nebezpečí.
  1. Klepněte na tlačítko Start a potom klepněte na příkaz Spustit.
  2. Do pole Otevřít zadejte Regedit a klepněte na tlačítko OK.
  3. V levém podokně okna Editor registru vyhledejte následující klíč registru pro výchozí instanci serveru SQL Server 2000:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer
    Pro pojmenované instance serveru SQL Server 2000 v levém podokně okna Editor registru vyhledejte následující klíč registru:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\MSSQLServer
  4. Klepněte pravým tlačítkem na klíč registru zadané v kroku 3, bod Nový a potom klepněte na příkaz Hodnota DWORD.
  5. Název DWORD hodnotaMAPIInitializeFlags.
  6. Klepněte pravým tlačítkem myši MAPIInitializeFlags registru hodnotu a klepněte na příkaz změnit.
  7. V dialogovém okně Upravit hodnotu DWORD zadejte 10001 v Údaj a potom klepněte na tlačítko OK.

    Poznámka: Ujistěte se, že je vybrána možnost Šestnáctková v části Base.
  8. Ukončete program Editor registru.

Musíte restartovat službu serveru SQL pro tyto příznaky se projeví.

Odkazy

Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
329375Oprava: Narušení přístupu může dojít k se SQL mail použít XP_SENDMAIL
Další informace o příznak MAPI_MULTITHREADED_NOTIFICATIONS naleznete na následujícím webu:
http://msdn2.microsoft.com/en-us/library/ms526469.aspx

Vlastnosti

ID článku: 839405 - Poslední aktualizace: 19. března 2007 - Revize: 3.6
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Klíčová slova: 
kbmt kbstack kberrmsg kbregistry kbsqlservmail kbprb KB839405 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:839405

Dejte nám zpětnou vazbu