通过应用程序角色在对SQL Server的访问中创建链接表

时间:2019-04-04 10:30:25

标签: sql-server ms-access access-vba

我正在尝试通过VBA脚本在MS Access中创建到SQL Server表的链接表。目前,我拥有以下功能,它们可以完美运行:

strConnect = "ODBC;DSN=xxx;Trusted_Connection=Yes;" & _
                        "APP=Microsoft Office;DATABASE=myDB;ApplicationIntent=READONLY;"
    aSourceTable = Array("dmy.Tab1", "dmy.Tab2", "dmy.Tab3", "dmy.Tab4")

    For X = 0 To UBound(aSourceTable)
        Set t = New TableDef
        t.Connect = strConnect
        t.NAME = Replace(aSourceTable(X), "dmy.", "") ' remove schema
        t.SourceTableName = aSourceTable(X)
        CurrentDb.TableDefs.Append t
    Next X

其中xxx是数据服务器名称,而myDB是我要连接的数据库。

现在,我尝试重新创建相同的链接表,但是与SQL Server的ODBC连接必须通过应用程序角色(已在SQL中创建)。关于如何解决这个问题的任何想法?我尝试在连接字符串中填充UID / Password参数,但这似乎不起作用。

我已经创建了应用程序角色:

名称-tempapprole

密码-临时密码

非常感谢,

尼克

2 个答案:

答案 0 :(得分:0)

这对我来说可以连接到MS SQL Server:

Dim Conn As New ADODB.Connection
Conn.ConnectionString = "DSN=" & myDB & ";UID=" & tempapprole & ";PWD=" & temppassword
Conn.Provider = "msdasql"
Conn.Open

答案 1 :(得分:-1)

您可以尝试以下操作-

Dim strConnect As New OleDb.OleDbConnection
strConnect.ConnectionString = "provider=microsoft.jet.oledb.4.0;data 
source=TABELS.mdb"
strConnect.Open()
aSourceTable = Array("dmy.Tab1", "dmy.Tab2", "dmy.Tab3", "dmy.Tab4")

For X = 0 To UBound(aSourceTable)
    Set t = New TableDef
    t.Connect = strConnect
    t.NAME = Replace(aSourceTable(X), "dmy.", "") ' remove schema
    t.SourceTableName = aSourceTable(X)
    CurrentDb.TableDefs.Append t
Next X