Frage

Ich habe installiert SQL Server 2008 R2 Auf meinem Rechner (meine Maschine läuft Windows Server 2003) einige der Tabellen in meinem db sind fireing Trigger (wenn einfügen, löschen, aktualisieren auftritt) das Trigger Ergebnis soll einen Prozess (triggersReceiver.exe via shared memory), dass darauf wartet, die Auslöser erreichen. das Problem ist, dass der SQL Server 2008 r2 diesen Prozess nicht erkennt den Fehler i, wenn Trigger ausgelöst erhalten: triggersReceiver.exe läuft nicht. aber er ist runing !!!!! ist jemand ein ähnliches Problem vor ??

konfrontiert

Dies ist der Code, dass der „-Anschluss dll“ der Teil, der ausgeführt wird, wenn überhaupt ein Trigger ausgelöst wird (dieser Code ausgeführt über erweiterte gespeicherte Prozedur): die gesamte Funktionalität ist in winbase.h (Windows-DLL)

gefunden
////////Defenitions///////////////////////////////////////////////////////
#define XP_TRIGGER_SHARED_MEMEORY   L"Global\\xp_trigger_shared_memory"
#define XP_TRIGGER_PROCESS_EVENT    L"Global\\xp_trigger_process_event"
#define XP_TRIGGER_DONE_EVENT        L"Global\\xp_trigger_done_event"
////////////////////////////////////////////////////////////////////////////

Diese Funktion gibt FALSE (ich weiß nicht, warum ...)

BOOL CTriggerGatewayConnector::Init()
{
::InitializeCriticalSection(&m_CS);

m_hMap = ::OpenFileMappingW(FILE_MAP_WRITE, FALSE, XP_TRIGGER_SHARED_MEMEORY);
if (m_hMap == NULL)
{

    return FALSE;
}

m_pSqlTrigInfo = (SqlTriggerInfo*)::MapViewOfFile(
                    m_hMap, FILE_MAP_WRITE, 0, 0,sizeof  (SqlTriggerInfo));
if (m_pSqlTrigInfo == NULL)
{
    return FALSE;
}

m_hProcess = ::CreateEventW(NULL, FALSE, FALSE, XP_TRIGGER_PROCESS_EVENT);
if (m_hProcess == NULL)
{
    return FALSE;
}

m_hDone = ::CreateEventW(NULL, FALSE, FALSE, XP_TRIGGER_DONE_EVENT);
if (m_hDone == NULL)
{
    return FALSE;
}

return TRUE;
}

Thnanks, Liran.

War es hilfreich?

Lösung

Das Problem ist gelöst !!! Es war eigentlich ein Berechtigungsproblem. wenn der Trigger ausgelöst es versucht, die Datei zu schreiben XP_TRIGGER_SHARED_MEMEORY Und es konnte nicht hier: m_hMap = :: OpenFileMappingW (FILE_MAP_WRITE, FALSE XP_TRIGGER_SHARED_MEMEORY); if (m_hMap == NULL) {    falsch zurückgeben; } der Trigger aktiviert tatsächlich die DLL, die an den SQL-Server, und der SQL-Server geladen wurde hat keine Erlaubnis (Teven durch die dll im Innern) nach Ahe Scherbe Datei zu schreiben.

, um es zu lösen müssen Sie die permmisions SQL Server geben: Rechtsklick auf MyComputer -> Verwalten -> Dienste und Anwendungen -> Dienstleistungen: ForEach SQL-Dienst: (in der Liste auf der rechten Seite) 1. Rechtsklick auf Sie -> Eigenschaften -> LogOn Tab. -> Änderung Lokales Systemkonto

Hope wird es somtime ..

Hilfe
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top