سؤال

لقد قمت بتثبيت SQL Server 2008 R2 على جهاز My Machine (يقوم جهاز My Mashwing Windows Server 2003) عبر الذاكرة المشتركة) التي تنتظر المشغلات. المشكلة هي أن SQL Server 2008 R2 لا يتعرف على هذه العملية. الخطأ الذي أحصل عليه عند حرائق الزناد: TriggersReceiver.exe لا يعمل. لكنه يركض !!!!! هل يواجه أي شخص مشكلة مماثلة من قبل ؟؟

هذا هو الرمز الذي في "الموصل 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"
////////////////////////////////////////////////////////////////////////////

هذه الوظيفة تعيد خطأ (لا أعرف لماذا ...)

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 ، ليران.

هل كانت مفيدة؟

المحلول

تم حل المشكلة !!! كانت في الواقع مشكلة إذن. عندما يحاول الزناد أن يحاول الكتابة إلى ملف xp_trigger_shared_memeory وفشلت هنا: m_hmap = :: openFileMappingw (file_map_write ، false ، xp_trigger_shared_memeory) ؛ if (m_hmap == null) {return false ؛ } قام المشغل بتنشيط DLL بالفعل الذي تم تحميله على خادم SQL ، ولا يحتوي خادم SQL على أي إذن (Teven خلال DLL بداخله) للكتابة إلى ملف Ahe Shard.

من أجل حلها ، تحتاج إلى إعطاء SQL Server التصنيفات: انقر بزر الماوس الأيمن على MyComputer -> إدارة -> الخدمات والتطبيق -> الخدمات:foreach SQL Service: (في القائمة على اليمين) 1. انقر بزر الماوس الأيمن على ذلك -> خصائص -> علامة التبويب Logon -> تغيير إلى حساب النظام المحلي.

أتمنى أن يساعد ذلك في Somtime ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top