2

我在 Microsoft Access 中有一个连接到 sql server 的 ODBC 链接表。

对于某些用户,连接到 SQL Server 的登录名只能访问一个具有 db_datareader 角色的数据库,因此他们无法编辑表中的任何数据。对于其他用户,他们有 db_datareader + db_datawriter 角色,他们可以编辑任何数据。

在 db_datareader 登录的情况下,如何在 vba 中检查我的表不可编辑?

4

1 回答 1

3

您可以使用直通查询来获取用户角色成员资格,并使用 querydefs 来创建或访问它们:

Public Function is_datawriter() As Boolean
    Dim qdef As DAO.QueryDef
    Dim rst As DAO.Recordset

    Set qdef = CurrentDb.CreateQueryDef("")
    qdef.Connect = "ODBC; MY_ODBC_CONN_STRING"
    qdef.SQL = "SELECT IS_ROLEMEMBER('db_datawriter')"
    Set rst = qdef.OpenRecordset(dbOpenDynaset)
    If rst.Fields(0).Value = 1 Then is_datawriter = True
End Function

测试特定于表的权限有些困难,但在您的情况下,这可能会做到。

于 2017-05-09T15:27:44.920 回答