ODBC SQL server驱动程序查询超时已过期



我在excel VBA中使用以下代码,得到超时过期错误。请帮助如何解决问题

Sub PiConnectorItems_muuk()
Dim oConn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim mssql As String
Dim row As Long
Dim Col As Integer
Dim ws As ThisWorkbook
Set ws = ThisWorkbook
Application.ScreenUpdating = False
Set oConn = New ADODB.Connection
Set rs = New ADODB.Recordset
mssql = "select * from abc"
oConn.ConnectionString = "driver={SQL Server};" & _
"server=ewepwapapisx05SQLEXPRESS;authenticateduser = TRUE;database=TIJSV"
oConn.ConnectionTimeout = 30
oConn.Open
rs.Open mssql, oConn
If rs.EOF Then
MsgBox "No matching records found."
rs.Close
oConn.Close
Exit Sub
End If
row = 1
Col = 1
For Each fld In rs.Fields
Sheet1.Cells(row, Col).Value = fld.Name
Col = Col + 1
Next
row = row + 1
Do While Not rs.EOF
Col = 1
For Each fld In rs.Fields
Sheet1.Cells(row, Col).Value = fld
Col = Col + 1
Next
row = row + 1
rs.MoveNext
Loop
rs.Close
oConn.Close
End Sub

我一直在寻找这个问题的解决方案,但还没有结果。

我猜您的连接字符串或服务器安全设置有问题。下面是在我的应用程序中工作的连接字符串。

"Provider=SQLOLEDB;Data Source=ServerNameSQLEXPRESS;Initial Catalog=MyDbName;Integrated Security=SSPI"

您可能有不同的服务器安全设置,因此上面的连接字符串可能需要调整。有关更多连接字符串,请查看此网站-它对我很有帮助。

https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/

检查机器上可用的ODBC数据源也可能是件好事,也许你有其他更容易使用的驱动程序。

如果您有对SQL server的管理员访问权限,您还可以创建具有对特定数据库的访问权限的用户,并使用连接字符串中的凭据。但这样做只是为了测试,因为excel中没有办法保护连接字符串信息。

"Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;"

我记得SQL服务器和Excel/Access之间的连接还有一个问题,那就是服务器有两个独立的互联网连接,有时防火墙会阻止用户。使用服务器IP而不是服务器名称是暂时的解决方案。

最新更新