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 回答