【问题标题】:How to create a ODBC connection to SQL Server?如何创建到 SQL Server 的 ODBC 连接?
【发布时间】:2013-05-02 17:22:29
【问题描述】:

我尝试使用 Access 在 SQL Server 中调用存储过程。但是很难构建 ODBC 连接,我不知道我错过了什么?还是只需要在 sql 站点中进行一些设置?

我有这样的屏幕:

确定按钮后面的代码是这样的:

      Dim dbPUBS As dao.Database
      Dim tdfPUBS As dao.TableDef
      Dim qdfPUBS As dao.QueryDef
      Dim strMsg As String
      Dim strSQL As String

  ' Check for existence of Server, Database and User Name.
          ' If missing, inform user and exit.

             If IsNull(Me!txtServer) Then
        strMsg = "Enter name of your company's Server." & _
            & "(See your database administrator)"
        MsgBox strMsg, vbInformation, "Missing Data"
        Me!txtServer.SetFocus
    ElseIf IsNull(Me!txtDatabase) Then
        strMsg = "Enter name of database. (Example: xxxx)"
        MsgBox strMsg, vbInformation, "Missing Data"
        Me!txtDatabase.SetFocus
    ElseIf IsNull(Me!txtUID) Then
        strMsg = "Enter user login.  (Example: xx)" = ""
        MsgBox strMsg, vbInformation, "Missing Data"
        Me!txtDatabase.SetFocus
    Else
        strServer   = Me!txtServer
        strDatabase = Me!txtDatabase
        strUID      = Me!txtUID
        ' Password may be NULL, so provide for that possibility
        strPWD      = Nz(Me!txtPWD, "")

        ' Prepare connection string
        strConnect = "ODBC;DRIVER={SQL Server}" _
                & ";SERVER=" & strServer _
                & ";DATABASE=" & strDatabase _
                & ";UID=" & strUID _
                & ";PWD=" & strPWD & ";"
    End If


            Private Function ValidateConnectString() As Boolean
           On Error Resume Next

            Err.Clear
            DoCmd.Hourglass True

       ' Assume success

       ValidateConnectString = True

' Create test Query and set properties

        Set qdfPUBS = dbPUBS.CreateQueryDef("")
         qdfPUBS.Connect = strConnect
        qdfPUBS.ReturnsRecords = False
        qdfPUBS.ODBCTimeout = 5

' Attempt to delete a record that doesn't exist

          qdfPUBS.SQL = "DELETE FROM Authors WHERE au_lname = 'Lesandrini'"

' Simply test one Pass Through query to see that previous
' connect string is still valid (server has not changed)

           qdfPUBS.Execute

' If there was an error, connection failed

          If Err.Number Then ValidateConnectString = False

          Set qdfPUBS = Nothing
          DoCmd.Hourglass False

End Function

【问题讨论】:

  • 您可能只使用了谷歌一秒钟。那会带来这个:sqlstrings.com/SQL-Server-connection-strings.htm
  • 谢谢,我的连接字符串已设置。但是它不起作用。我只是困惑。对不起
  • 但是根据我引用的页面,您的连接字符串似乎是错误的......例如,它不应该是DRIVER={SQL SERVER},而是DRIVER={SQLServer}

标签: sql sql-server vba ms-access


【解决方案1】:

您应该访问ConnectionStrings 站点了解详细信息,但是,如果我是您,我不会使用 ODBC。
我的连接是(对于 SQL Server 2012):

Private oCon As ADODB.Connection

Public Sub InitConnection(ByRef sDataSource As String, ByRef sDBName As String) Dim sConStr As String Set oCon = New ADODB.Connection sConStr = "Provider=MSDataShape;Data Provider=SQLNCLI11;" & _ "Integrated Security=SSPI;Persist Security Info=False;Data Source=" & _ sDataSource & ";Initial Catalog=" & sDBName On Error Resume Next Call oCon.Open(sConStr) If (Err.Number = 0) Then 'all OK Else 'Show Error Message / Throw / Sink / etc End If On Error GoTo 0 End Sub

sDataSource 是“[COMPUTERNAME]\[SQL SERVER INSTANCE]”(与 SSMS 相同,类似于“MyHomePC\SQLEXP”),sDBName 是默认目录,即默认打开的 DB。您需要添加对 Microsoft ActiveX Data Objects 的引用,以便您可以使用 ADODB ConnectionCommandRecordset 对象(在 Access VB 窗口中:“工具”->“参考...”)。
MSDataShape 不是强制性的,但对于分层网格很方便。


编辑:顺便说一句,来自 connstr。站点:Driver={SQL Server Native Client 11.0};Server=myServerAddress;Database=myDataBase; Uid=myUsername;Pwd=myPassword;(同样,对于 SQL Server 2012,对于 2008,它是“...Client 10”)

【讨论】:

  • 非常感谢。对于初学者来说,也许这个项目对我来说太难了。我会阅读你给我的链接,看看我能走多远。
  • 不客气!一切都很容易——如果你知道怎么做。你只需要学习它,仅此而已;)
  • 我看到我的服务器是 'SQL server 9.0.5000' 这是否意味着 Server 2005?和客户 9?
  • 现在是 2005 年。然后您的 ODBC 驱动程序出现在“Driver={SQL Native Client}”
  • 非常感谢。我想要做的是我在 sql 中有四个参数的存储过程。我想在访问中构建一个应用程序,让用户执行存储过程。我在网上找到了一个示例,想学习如何构建自己的示例。
【解决方案2】:

这是错误的

    strConnect = "ODBC;DRIVER={SQL Server}" _
            & ";SERVER=" & strServer _
            & ";DATABASE=" & strDatabase _
            & ";UID=" & strUID _
            & ";PWD=" & strPWD & ";"

应该是这样的

    strConnect = "DRIVER={SQL Server Native Client 10.0}" _
            & ";SERVER=" & strServer _
            & ";DATABASE=" & strDatabase _
            & ";UID=" & strUID _
            & ";PWD=" & strPWD & ";"

【讨论】:

  • 谢谢,抱歉连接仍然失败
  • 我已经编辑了我的答案。这是为了连接 SQL Server 2008。请访问connectionstrings.com了解更多详细信息。
  • 谢谢,我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多