SQL Server连接字符串尝试连接到错误的数据库

时间:2014-02-28 01:29:47

标签: vba sql-server-2005 database-connection

我的Access前端的连接字符串或SQL Server DB的安全性出现问题。我打赌它的安全性,我是新手。

我已根据我的数据库在SQL Server上设置登录名,并将其分配给具有针对该数据库的执行权限的角色。

下面是我的VBA代码以及错误消息。从本质上讲,它似乎尝试连接到服务器上的另一个数据库。

Public Sub ExecuteProc(ProcName As String)

    On Error GoTo PROC_ERR

    Dim cmd As New ADODB.Command
    Dim cnn As New ADODB.Connection

    Dim stConnect As String

    ''On Error Resume Next

    DoCmd.Hourglass True
    stConnect = "Driver={SQL Native Client};Server=MyServer;Database=MyDatabase;UID=MyUser;PWD=MyPWD;"


    Debug.Print stConnect

    cnn.Open stConnect

    With cmd
    .ActiveConnection = cnn
    .CommandType = adCmdStoredProc
    .CommandText = ProcName
    .Execute
    End With

PROC_EXIT:
    On Error Resume Next
    DoCmd.Hourglass False
    cnn.Close
    Set cnn = Nothing
    Set cmd = Nothing
    Exit Sub

PROC_ERR:

    MsgBox Err.Number & vbCrLf & Err.Description
    Debug.Print Err.Number & vbCrLf & Err.Description
    Resume PROC_EXIT

End Sub

ERROR:

-2147467259
[Microsoft][SQL Native Client][SQL Server]The server principal "MyUser" is not able to access the database "AnotherDatabase" under the current security context.

服务器是SQL 2005 SP4,Access应用程序安装在Windows 7计算机上。 Windows 7计算机安装了以下驱动程序:

SQL Native Client 2005.90.5000.00

SQL Server 6.01.7601.17514

我已经检查了Surface Area Configuration,并设置了使用TCP / IP和命名管道的远程连接。还有其他应用程序连接到服务器上的其他数据库,它们都可以正常工作。

我不确定在哪里看。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

检查存储过程本身以查看它是否正在查询该其他数据库。完全可以进行跨数据库查询,并且您还需要权限来读取其他数据库。

相关问题