您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

系统过程特权

特许系统过程可以两种安全模型运行。每个模型都会授予以不同方式运行系统过程的权限。

注意 以下信息只适用于 SAP IQ 特许系统过程,不适合用户定义的存储过程。

第一个模型称为 SYSTEM PROCEDURE DEFINER 模型,以特许系统过程所有者(通常是 dbo)特权来运行该过程。第二个模型称为 SYSTEM PROCEDURE INVOKER 模型,以执行特许系统过程的人员的特权来运行该过程。

要使用 SYSTEM PROCEDURE DEFINER 模型来运行特许系统过程,需要授予对该过程的显式 EXECUTE 对象级特权。运行系统过程的任何基础已授权任务所需的所有系统特权都自动从所有者(系统过程的定义者)继承。

对于使用 SYSTEM PROCEDURE INVOKER 模型的特许系统过程,系统会向 PUBLIC 角色授予 EXECUTE 对象级特权,由于在缺省情况下,每个用户都是 PUBLIC 角色的成员,因此,每个用户都会自动继承 EXECUTE 对象级特权。但是,由于 PUBLIC 角色并不是系统过程的所有者,并且未被授予任何系统特权,因此,必须将运行任何基础已授权任务所需的系统特权直接或间接授予该用户。

缺省情况下,16.x 及更高版本所创建的数据库,使用 SYSTEM PROCEDURE INVOKER 模型来运行所有特许系统过程。16.x 之前以及 16.x 及更高版本所创建的数据库组合,使用 SYSTEM PROCEDURE DEFINER 和 SYSTEM PROCEDURE INVOKER 模型来运行特许系统过程。在组合模型中,所有 16.x 之前版本的特许系统过程都使用 SYSTEM PROCEDURE DEFINER 模型,而在 16.x(或任何之后的版本)中引入的所有特许系统过程都使用 SYSTEM PROCEDURE INVOKER 模型。可在创建或升级数据库期间或者在此后的任何时间替换缺省安全模型。但 SAP 不建议这么做,因为这可能会造成自定义存储过程和应用程序的功能丢失。