0

したがって、SQL Server 2005 で dsn に接続しようとしているこのコードがあります。

Dim cn, cmd

set cn = createobject("ADODB.connection")
set cmd = createobject("ADODB.command")
cn.open ("dsn=LBILLBKP;UID=lbmkbkp;PWD=lbmkbkp")
cmd.activeconnection = cn

If Err.Number <> 0 Then
  ErrLog "Export Script backup Err# 1 " & Err.Description, ErrFile, fso
  MailMsg = "The " & Region & " ListBill Export process failed while taking Database backup. Check the server log files (Scrpt.log, Error.Log, ftp.log)"
  MailRtn = SendMail(MailList, MailMsg, "0", "0")  

If MailRtn <> "0" Then
  ErrLog "Export Script backup Err# 2 " & MailRtn, ErrFile, fso
End If

fso = Empty 
WScript.Quit
End If

set cmd = nothing
cn.close
set cn = nothing

しかし、それは 3709 エラーをスローしています。上記の ID でデータベースへの接続を確認し、データベースのバックアップを作成するはずの dsn を手動で確認し、バックアップを正常に完了しました。データ ソース (ODBC) から同じ ID を持つ dsn を確認しましたが、正常に動作しています。コード内のすべてのステートメントの後に wscript.echo("") を追加して、どのステートメントが実行されていないかを確認しましたが、ジョブは正常に実行されており、すべてのステップが実行されているようです。私が何をすべきか提案してください。

4

1 に答える 1

0

あなたの方法がうまくいかない理由がわかりません。個人的には、別の手法を使用していますが、これは機能します (少なくとも私にとっては)。多分あなたはこれを試すことができます。状況に合わせてスクリプトを調整する必要があります。DSN を使用しない利点は、dsn が定義されているコンピューター上だけでなく、(もちろんデータベース サーバーに到達できる限り) スクリプトが常に機能することです。

Dim strServer, strDB, strUser, strPwd, objMyConn, strSQL, objMyRecordset, x

'Declare variables
strServer = "mssql1\mssql1inst1"
strDB = "Obelix"
strUser = "myusername"
strPwd = "mypassword"
Set objMyConn = CreateObject("ADODB.Connection")
Set objMyRecordset = CreateObject("ADODB.Recordset")

'Open Connection
objMyConn.Open "Driver={SQL Server};Server=" & strServer & ";Database=" & strDB, strUser, strPwd

'Set SQL Command
strSQL = "SELECT * FROM addressformatheading"

'Open Recordset
objMyRecordset.Open strSQL, objMyConn

'Do something with the data
Do Until objMyRecordset.EOF
  For Each x In objMyRecordset.Fields
    Wscript.Echo x.name, " = ", x.value
  Next
  Wscript.Echo
  objMyRecordset.MoveNext
Loop

'Clean up
objMyRecordset.Close
objMyConn.Close
于 2013-07-22T08:28:07.510 に答える