如何在 Access VBA 中检查 ODBC SQL Server 表是否具有写入权限



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

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

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

可以使用直通查询来获取用户角色成员身份,并使用 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

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

相关内容

  • 没有找到相关文章

最新更新