VBScript / SQL Server Запускается, чтобы указать, затем возвращает синтаксическую ошибку в определенной строке - PullRequest
0 голосов
/ 14 мая 2018

не уверен, сколько информации я могу предоставить, поскольку это живая чувствительная база данных.

Я восстанавливаю код своего предшественника.

Существует файл VBS, который проверяет электронную почту из таблицы 1, использует оператор split после '@', чтобы получить домен, затем проверяет, существует ли этот домен в других таблицах.Если это так, извлеките некоторые поля из этих таблиц сопоставления, а затем обновите третью таблицу, в которой сопоставляется адрес электронной почты.

Насколько я могу судить, один из массивов / таблиц, созданных для сопоставления, имеет длину 20 000 записей.Однако скрипт запускается, затем завершается с ошибкой по определенному адресу электронной почты / номеру записи, ссылаясь на Неверный синтаксис рядом с '.'

Опять же, не слишком знаком с vbscript и довольно ржавый с моим SQL.Кто-нибудь может посоветовать, в чем может быть проблема?Возможно, это была проблема истечения времени ожидания запроса, но для сервера не установлено ограничение по времени для запросов.

Сценарий ниже:

'START - Delete
set rsDelete = conn.execute("DELETE FROM JofTest_emailTrackDump")
set rsDelete = nothing
'END - Delete

'START - Update
set rsUpdate = conn.execute("INSERT INTO JofTest_emailTrackDump (emailTrack_email) SELECT DISTINCT emailIP_emailAddress AS emailTrack_email FROM JofTest_emailIP WHERE emailIP_emailAddress <> '' AND emailIP_hide = 0 AND emailIP_emailAddress IS NOT NULL AND emailIP_emailAddress NOT IN (SELECT DISTINCT emailIP_emailAddress2 FROM ((SELECT DISTINCT rec_email_company AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_company <> '' AND rec_email_company IS NOT NULL) UNION (SELECT DISTINCT rec_email_direct AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_direct <> '' AND rec_email_direct IS NOT NULL) UNION (SELECT DISTINCT rec_email_additional AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_additional <> '' AND rec_email_additional IS NOT NULL) UNION (SELECT DISTINCT contact_email_primary AS emailIP_emailAddress2 FROM JofTest_crm_contacts_masters WHERE contact_email_primary <> '' AND contact_email_primary IS NOT NULL) ) A) ORDER BY emailIP_emailAddress ")
set rsUpdate = nothing
'END - Update

'START - Find Partial Match
set rsPartialList = conn.execute("SELECT DISTINCT emailIP_emailAddress AS emailTrack_email FROM JofTest_emailIP WHERE emailIP_emailAddress <> '' AND emailIP_hide = 0 AND emailIP_emailAddress IS NOT NULL AND emailIP_emailAddress NOT IN (SELECT DISTINCT emailIP_emailAddress2 FROM ((SELECT DISTINCT rec_email_company AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_company <> '' AND rec_email_company IS NOT NULL) UNION (SELECT DISTINCT rec_email_direct AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_direct <> '' AND rec_email_direct IS NOT NULL) UNION (SELECT DISTINCT rec_email_additional AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_additional <> '' AND rec_email_additional IS NOT NULL) UNION (SELECT DISTINCT contact_email_primary AS emailIP_emailAddress2 FROM JofTest_crm_contacts_masters WHERE contact_email_primary <> '' AND contact_email_primary IS NOT NULL) ) A) ORDER BY emailIP_emailAddress")
while not rsPartialList.eof

    'START - Make Host
    if instr(rsPartialList("emailTrack_email"), "@") > -1 then

        arrHost = split(rsPartialList("emailTrack_email"), "@")

        if ubound(arrHost) > 0 then

            emailAddressHost = arrHost(1)

            'START - Find Partial Match
            set rsFindPartial = conn.execute("SELECT rec_id, rec_company FROM crm_company_masters LEFT JOIN crm_contacts_masters ON contact_recID = rec_id WHERE (rec_email_company LIKE '%" & emailAddressHost & "' OR rec_email_direct LIKE '%" & emailAddressHost & "' OR rec_email_additional LIKE '%" & emailAddressHost & "' OR contact_email_primary LIKE '%" & emailAddressHost & "')")
            if not rsFindPartial.eof then

                'START - Update Dump With Partial Match Info
                set rsUpdatePartial = conn.execute("UPDATE emailTrackDump SET emailTrack_partialRecID = " & rsFindPartial("rec_id") & ", emailTrack_partialCompany = '" & rsFindPartial("rec_company") & "' WHERE emailTrack_email = '" & rsPartialList("emailTrack_email") & "'")

                'END - Update Dump With Partial Match Info

                varCount = varCount + 1

            end If
            rsFindPartial.close()
            set rsFindPartial = nothing
            'END - Find Partial Match

        end if
    end If
    For Each field In arrHost
   Wscript.Echo field
   Next



    'END - Make Host

rsPartialList.movenext()
wend
rsPartialList.close()
set rsPartialList = nothing
'END - Find Partial Match

'Close Connection
conn.close()
set conn = nothing

Ошибка в строке 33, символ 17 set rsUpdatePartial = conn.execute("UPDATE email....

РЕДАКТИРОВАТЬ - также удалив кусочки, я смог запустить код.Часть, которую я удалил, была секцией под названием Update Dump with Partial Match Info, поэтому я должен предположить, что ошибка находится внутри нее.

1 Ответ

0 голосов
/ 15 мая 2018

Не совсем уверен, как назначить правильный ответ здесь, вы были в порядке, что это был хитрый персонаж, но особенно спасибо Нику МакДермаиду за предоставленную строку, чтобы найти его.

Полностью понимаете необходимостьИзбегайте подобных сценариев, и я дружу с маленькими Бобби Таблицами.Как уже говорилось, это код моего предшественника, собранный вместе, чтобы найти подходящие домены для соответствия GDPR, он просто работает, чтобы предоставить очистителю данных список записей для проверки.

Спасибо всем за вашу помощь.

С уважением,

JL

...