如何将 ID 分配给引用 table 以及如何正确显示它? (SSMS)

How to assign the IDs to the referring table and how to display this correctly? (SSMS)

我正在使用 ERD 创建审计计划,从下图中可以看到有一个权限 table,其中有四个 FK 列引用其他四个 tables PK专栏。我只是对这些 ID 如何与其他 table 相关以及它如何在权限 table?

中正确显示感到困惑

对于用户 table,我从“master.sys.server_principals 导入了数据。 对于实例 table,我使用 @@SERVERNAME 导入了数据。 对于数据库 table,我从 master.sys.databases 导入了数据。 对于对象类型 table,我从 master.sys.objects.

导入了数据

现在,我目前正在使用 table 权限并停留在这一点上,因为我想知道 ID 将如何与其他四个 table 匹配(上面提到并显示在图像中link 下面)到此权限 table。我知道我需要从 master.sys.database_permissions 查询以获取 'Permissions_Permission_Name' 和 'Permissions_Object_Name' 两列的信息,但这只是我感到困惑的其他四个 ID 列......(你可以忽略该列 Permissions_ID)

我将使用答案字段,因为评论编辑器中没有 space。这个答案只是部分问题的答案,四个 tables 中的两个(数据库和用户)我可以与系统 tables.

相关

首先也是最重要的:填写 Id 时,您将首先生成其他 table 记录,保留生成的 Identity Id,最后创建一个新的 Permission 记录并在每个 Id 中填写正确的索引场地。当 table 包含其他 table 的索引时,这对任何此类更改都很重要。假设你知道。

问题是,您的结构与系统 tables 不同。您将需要比 master.sys.database_permissions 更多的“权限”记录,因为 MsSQL 将这些注册为每个主体(角色)的权限而不是每个用户的权限。

我解决了四个中的两个:

  • 用户通过 master.sys.database_role_members 连接到主要角色。用户角色的 ID 可以在您的来源中找到 master.sys.database_permissions.grantee_principal_id 并且具有此 principal_id 的相应用户列在 master.sys.database_role_members.

  • 你的权限一个数据库(ONE database)在你的Permission记录中定义。此数据库记录中的数据库名称应映射到您服务器上的数据库。在该数据库中,您会找到 database_permissions.sys.server_principals。具有权限的用户(再次)在 master.sys.database_role_members.

    中找到

我不确定您打算如何处理其他 2 个 table,实例和对象类型。

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-permissions-transact-sql?view=sql-server-ver15

中参考有关该主题的 ms-docs