Sql server vb6 ADODB TSQL过程调用在数据库迁移后退出工作
这段代码曾经在SQLServer2005上运行。现在,在使用ADODB连接到sql server 2008数据库的visual basic 6子程序中,它会抛出一个错误,说明: “用户“admin”登录失败” 此后,我验证了如果我将此sub的主体替换为此sub下面的替代代码,连接字符串是否有效。当我使用按钮运行小程序时,它会在星号线下方标记的位置停止。有什么想法吗?提前谢谢Sql server vb6 ADODB TSQL过程调用在数据库迁移后退出工作,sql-server,sql-server-2005,tsql,vb6,Sql Server,Sql Server 2005,Tsql,Vb6,这段代码曾经在SQLServer2005上运行。现在,在使用ADODB连接到sql server 2008数据库的visual basic 6子程序中,它会抛出一个错误,说明: “用户“admin”登录失败” 此后,我验证了如果我将此sub的主体替换为此sub下面的替代代码,连接字符串是否有效。当我使用按钮运行小程序时,它会在星号线下方标记的位置停止。有什么想法吗?提前谢谢 Private Sub Command1_Click() Dim cSQLConn As New ADODB.Conne
Private Sub Command1_Click()
Dim cSQLConn As New ADODB.Connection
Dim cmdGetInvoices As New ADODB.Command
Dim myRs As New ADODB.Recordset
Dim dStartDateIn As Date
dStartDateIn = "2010/05/01"
cSQLConn.ConnectionString = "Provider=sqloledb;" _
& "SERVER=NET-BRAIN;" _
& "Database=DB_app;" _
& "User Id=admin;" _
& "Password=mudslinger;"
cSQLConn.Open
cmdGetInvoices.CommandTimeout = 0
sProc = "GetUnconvertedInvoices"
'On Error GoTo GetUnconvertedInvoices_Err
With cmdGetInvoices
.CommandType = adCmdStoredProc
.CommandText = "_sp_cwm5_GetUnCvtdInv"
.Name = "_sp_cwm5_GetUnCvtdInv"
Set oParm1 = .CreateParameter("@StartDate", adDate, adParamInput)
.Parameters.Append oParm1
oParm1.Value = dStartDateIn
.ActiveConnection = cSQLConn
End With
With myRs
.CursorLocation = adUseClient
.LockType = adLockBatchOptimistic
.CursorType = adOpenKeyset
'.CursorType = adOpenStatic
.CacheSize = 5000
'***************************Debug stops here
.Open cmdGetInvoices
End With
If myRs.State = adStateOpen Then
Set GetUnconvertedInvoices = myRs
Else
Set GetUnconvertedInvoices = Nothing
End If
End Sub
下面是验证连接字符串是否正常工作的代码
Dim cSQLConn As New ADODB.Connection
Dim cmdGetInvoices As New ADODB.Command
Dim myRs As New ADODB.Recordset
cSQLConn.ConnectionString = "Provider=sqloledb;" _
& "SERVER=NET-BRAIN;" _
& "Database=DB_app;" _
& "User Id=admin;" _
& "Password=mudslinger;"
cSQLConn.Open
cmdGetInvoices.CommandTimeout = 0
sProc = "GetUnconvertedInvoices"
With cmdGetInvoices
.ActiveConnection = cSQLConn
.CommandText = "SELECT top 5 * FROM tarInvoice;"
.CommandType = adCmdText
End With
With myRs
.CursorLocation = adUseClient
.LockType = adLockBatchOptimistic
'.CursorType = adOpenKeyset
.CursorType = adOpenStatic
'.CacheSize = 5000
.Open cmdGetInvoices
End With
If myRs.EOF = False Then
myRs.MoveFirst
Do
MsgBox "Record " & myRs.AbsolutePosition & " " & _
myRs.Fields(0).Name & "=" & myRs.Fields(0) & " " & _
myRs.Fields(1).Name & "=" & myRs.Fields(1)
myRs.MoveNext
Loop Until myRs.EOF = True
End If
这可能不会导致您看到的错误,但根据:
“如果CursorLocation属性设置为adUseClient,则仅支持adOpenStatic设置。如果设置了不支持的值,则不会产生错误;将使用最接近的支持的CursorType。”结果表明,这是sql server 2008中的链接数据库权限错误。我不得不删除链接,并用登录名/密码重新创建它 如果查看SQL Server错误日志,您将看到一条登录失败消息和一个与此列表中的错误状态号匹配的错误状态号。它显示的是什么状态?