我已经在我的机器上安装了 SQL Server 2008 R2(我的机器运行 Windows Server 2003)我的数据库中的一些表正在触发触发器(当插入、删除、更新发生时)触发器结果应该到达某个进程(triggersReceiver.exe通过共享内存)等待触发器。问题是 SQL Server 2008 r2 无法识别此过程触发器触发时我得到的错误: triggersReceiver.exe is not running 。但他在跑!!!!有没有人遇到过类似的问题??
这是“连接器 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;
}
谢谢,立然。