我的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和命名管道的远程连接。还有其他应用程序连接到服务器上的其他数据库,它们都可以正常工作。
我不确定在哪里看。有什么想法吗?
答案 0 :(得分:1)
检查存储过程本身以查看它是否正在查询该其他数据库。完全可以进行跨数据库查询,并且您还需要权限来读取其他数据库。