2016-07-28 1 views
0

Я пытаюсь найти код ошибки при попытке создать логин с помощью объекта adodb.command.Как найти код ошибки sql в vbscript adodb.command.execute для «create login»

Если «создать вход в систему» ​​успешно завершен, создается объект adoRecord. Если это не удается, нет объекта ado, если он создан.

Я хотел бы отобразить и зарегистрировать ошибку сервера sql ошибки. Объект Err пуст при неудачном выполнении.

Код:

tsqlcmd.CommandText = "CREATE LOGIN " & uname & " WITH PASSWORD = '" & upw & "'" 
tsqlcmd.ActiveConnection = conn 

On Error Resume Next 
SET adoRec = tsqlcmd.Execute() 
' How to I find the sql error ? 
IF Err <> 0 THEN 
    serr.Number = Err.Number 
    serr.Description = Err.Description 
    serr.Source = Err.Source 
    serr.HelpContext = Err.HelpContext 
    createLogin = false 

    errmsg = "createLogin: ADODB Create Command Error: " & Hex(serr.Number) & vbCrLf & _ 
      "Desc: " & serr.Description & vbCrLf & _ 
      serr.Source & vbCrLf 
    'Fake logging 
    MsgBox(errmsg) 
    EXIT FUNCTION 
END IF 

ответ

0

ExecuteComplete Событие

Событие ExecuteComplete вызывается после того, как команда завершит выполнение.

Синтаксис ExecuteComplete RecordsAffected, Perror, adStatus, pCommand, pRecordset, pConnection

Параметры RecordsAffected A Long значение, указывающее количество записей, затронутых командой.

pError Ошибка объекта. Он описывает ошибку, которая произошла, если значение

adStatus adStatusErrorsOccurred; иначе он не будет установлен.

adStatus Состояние события EventStatusEnum. Когда это событие вызывается, этот параметр имеет значение adStatusOK, если операция, вызвавшая событие , была успешной или adStatusErrorsOccurred, если операция завершилась неудачно. Прежде чем это событие вернется, установите этот параметр в adStatusUnwantedEvent , чтобы предотвратить последующие уведомления.

pCommand Объект Command, который был выполнен. Содержит объект , даже при вызове Connection.Execute или Recordset.Open без явно создавая команду, в случае чего объект Command , созданный внутри ADO.

pRecordset Объект Recordset, который является результатом выполненной команды . Этот набор записей может быть пустым. Вы никогда не должны уничтожать этот объект Recordset из этого события обработчик. Это приведет к нарушению доступа, когда ADO пытается получить доступ к объекту, который больше не существует.

pConnection A Объект связи. Соединение, по которому выполнялась операция.

Примечания

ExecuteComplete событие может произойти из-за Connection.Execute, Command.Execute, Recordset.Open, Recordset.Requery или методов Recordset.NextRecordset.

+0

@searchandresq 'тк: @MSITStore: C: \ Program% 20Files% 20 (x86) \ Microsoft% 20Visual% 20Studio \ MSDN \ 2001OCT \ 1033 \ ado270.chm ::/HTM/mdevtexecutecomplete.htm' –

+0

Я имел в виду, с ответом :). Не могли бы вы добавить его к своему ответу? – SearchAndResQ

+0

@SearchAndResQ Это ссылка на файл на моем жестком диске. Это справка MSDN SDK. –