我已經安裝了SQL Server 2008 R2在我的機器上(我的機器運行的是windows server 2003) 我的數據庫中的一些表是觸發觸發器(當插入,刪除,更新發生) 觸發結果應該達到一些等待觸發器的進程(通過共享內存的triggersReceiver.exe)。 問題是SQL Server 2008 R2無法識別這個過程,當觸發器觸發時我得到的錯誤: triggersReceiver.exe未運行。 但他跑了!!!!! 是任何人在面對類似的問題之前?Sql Server 2008 R2在觸發時無法識別進程
這是「連接器DLL」的代碼,當觸發器觸發(此代碼通過擴展存儲過程執行)時執行的部分: 所有功能都在winbase.h中找到(windows dll)
////////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"
////////////////////////////////////////////////////////////////////////////
此函數返回FALSE(我不知道爲什麼...)
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, 麗然。
你應該發佈一些代碼。 – devio 2010-09-27 09:37:54
當您發佈代碼時,您可以選擇全部,然後使用'100100100'按鈕進行正確格式化。 – 2010-09-27 10:24:22
對不起,下次我會.. :) – Liran 2010-09-27 10:39:06