我在 MS Access 中有这个 DSN-less 连接字符串,我想用它来连接到 SQL Server 2019:
Private Const CONNECTION_STRING = "ODBC;Driver={SQL Server Native Client 11.0};Server=aaa;Database=bbb;Trusted_Connection=yes;"
当我在下面的这段代码中使用这个字符串时,它有效并正确检索链接表:
Public Sub LinkSQLTables()
On Error GoTo ErrHandler
Dim td As TableDef
Dim rs As Recordset
For Each td In CurrentDb.TableDefs
If td.Name Like "v_*" Or td.Name Like "vDE_*" Then
CurrentDb.TableDefs.Delete td.Name
End If
Next
Set rs = CurrentDb.OpenRecordset("SELECT * FROM SQL_Links", dbOpenSnapshot)
Do While Not (rs.BOF Or rs.EOF)
Set td = CurrentDb.CreateTableDef(rs!LinkName, dbAttachSavePWD, rs!LinkName, CONNECTION_STRING)
CurrentDb.TableDefs.Append td
CurrentDb.Execute "CREATE INDEX " & rs("LinkName") & "_PK ON " & rs("LinkName") & " (" & rs("PrimaryKeyField") & ") WITH PRIMARY"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Exit Sub
ErrHandler:
MsgBox "Během pokusu o spojení s databází nastala chyba. Aplikace bude ukončena." & vbNewLine & vbNewLine & _
"Číslo chyby: " & Err.Number & vbNewLine & _
"Popis chyby: " & Err.Description, vbCritical + vbOKOnly, "Chyba"
rs.Close
Set rs = Nothing
Application.Quit
End Sub
但是,当我使用相同的连接字符串打开 ADO 连接时,如下面的代码所示:
Set Conn = New ADODB.Connection
Conn.ConnectionString = CONNECTION_STRING
Conn.Open
我在 Conn.Open 上收到错误消息:未找到数据源名称且未指定默认驱动程序。
我应该怎么做才能纠正这个问题?谢谢。
ODBC;
是 DAO 特定的前缀。使用 ADO 时,您必须忽略它。
我经常用这样的东西:
Const CONNECTION_STRING_DAO = "ODBC;Driver={SQL Server Native Client 11.0};Server=aaa;Database=bbb;Trusted_Connection=yes;"
Const CONNECTION_STRING_ADO = "Driver={SQL Server Native Client 11.0};Server=aaa;Database=bbb;Trusted_Connection=yes;"
然后,使用适当的字符串进行适当的技术。
我经常将 OLEDB 用于我的 ADO 字符串,因为 ADO 本身与 OLEDB 一起工作,而 DAO 根本不与 OLEDB 一起工作。