我已经安装了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