如何检查Access VBA ODBC SQL Server表是否具有写访问权限?

时间:2017-05-09 14:19:41

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

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

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

如果db_datareader登录,如何在vba中检查我的表是不可编辑的?

1 个答案:

答案 0 :(得分:3)

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

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

测试特定于表的权限有点困难,但在您的情况下,这可能会有所帮助。