如何创建到SQL Server的ODBC连接?

如何创建到SQL Server的ODBC连接?,sql,sql-server,vba,ms-access,Sql,Sql Server,Vba,Ms Access,我尝试使用Access调用SQL Server中的存储过程。但是,我们在建造 ODBC连接,我不知道我是否遗漏了什么?或者只需要在sql站点中做一些设置 我有这样一个屏幕: OK按钮后面的代码是: Dim dbPUBS As dao.Database Dim tdfPUBS As dao.TableDef Dim qdfPUBS As dao.QueryDef Dim strMsg As String Dim strSQL As St

我尝试使用Access调用SQL Server中的存储过程。但是,我们在建造 ODBC连接,我不知道我是否遗漏了什么?或者只需要在sql站点中做一些设置

我有这样一个屏幕:

OK按钮后面的代码是:

      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
这是错误的

    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 & ";"
您应该访问该站点了解详细信息,但是,如果我是您,我不会使用ODBC。
我的连接是(对于SQL Server 2012):

私有oCon作为ADODB.Connection

公共子初始化连接(ByRef sDataSource作为字符串,ByRef sDBName作为字符串) 作为字符串的Dim sConStr 设置oCon=newadodb.Connection sConStr=“Provider=MSDataShape;数据提供程序=SQLNCLI11;”_ “集成安全性=SSPI;持久安全性信息=False;数据源=”&_ sDataSource&“Initial Catalog=“&sDBName 出错时继续下一步 呼叫oCon.Open(sConStr) 如果(Err.Number=0),则 ”“好的 其他的 '显示错误消息/抛出/接收/等 如果结束 错误转到0 末端接头
其中,
sDataSource
是“[COMPUTERNAME]\[SQL SERVER INSTANCE]”(与SSMS中相同,类似于“MyHomePC\SQLEXP”),而
sDBName
是默认目录,即默认打开的数据库。您需要添加对
Microsoft ActiveX数据对象的引用
,这样您就可以使用
ADODB
连接
命令
记录集
对象(在Access VB窗口中:“工具”->“引用…”)。
MSDataShape
不是强制性的,但对于分层网格来说很方便。



编辑:顺便说一句,来自康斯特。站点:
Driver={SQLServer本机客户端11.0};Server=myserver地址;数据库=myDataBase;

Uid=我的用户名;Pwd=我的密码(同样,对于SQL Server 2012,对于2008,它是“…客户端10”)

您可以使用Google一秒钟。这会导致这样的问题:谢谢,我的连接字符串已经设置好了。但是它不工作。我只是感到困惑。很抱歉,但根据我引用的页面,您的连接字符串似乎有误。。。例如,它不应该说
DRIVER={SQLServer}
,而应该说
DRIVER={SQLServer}
!谢谢,很抱歉连接仍然失败。我已经编辑了我的答案。这是为了连接SQL Server 2008。请访问了解更多详细信息。谢谢,我会尝试一下。非常感谢。对于初学者来说,也许这个项目对我来说太难了。我会阅读你给我的链接,看看我能走多远。不客气!一切都很容易——如果你知道怎么做的话。你只需要学习它,仅此而已;)我看到我的服务器是“SQLServer9.0.5000”,这是指Server2005吗?客户9号呢?是2005年。然后,ODBC驱动程序将转到“driver={SQL Native Client}”,非常感谢。我想做的是在sql中有一个存储过程,它有四个参数。我想在access中创建一个应用程序,让用户执行store程序。我在网上找到了一个例子,想学习如何建立自己的。
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