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

sp_modify_resource_limit

语法


sp_modify_resource_limit {<name>, <appname>} 
	<rangename>, <limittype>, <limitvalue>, <enforced>, <action>, <scope>

参数

<name>

是对其应用限制的 SAP ASE 登录名。必须指定 <name><appname>,或指定两者。若要修改应用于特定应用程序的所有用户的限制,可指定一个值为 null 的 <name>

<appname>

是对其应用限制的应用程序名称。必须指定 <name><appname>,或指定两者。如果该限制应用于 <name> 所使用的所有应用程序,则指定 <appname> 的值为 null。如果该限制控制特定应用程序,则指定客户端程序在登录包中传递给 SAP ASE 服务器的应用程序的名称。

<rangename>

是强制执行限制的时间范围。您不能修改此值,但必须指定一个非空值来唯一地标识资源限制。

<limittype>

是对其应用限制的资源的类型。您不能修改此值,但必须指定一个非空值来唯一地标识资源限制。该值必须是下列值之一:

  • row_count – 限制一个查询可以返回的行数

  • elapsed_time – 限制查询批处理或事务可以运行的秒数(按挂钟时间)

  • io_cost – 限制处理查询的实际开销,或者限制优化程序针对处理查询所作的开销估计

  • tempdb_space – 限制单个会话可以具有的 tempdb 数据库中的页数

    <limit_value>

    是在 SAP ASE 服务器强制执行该限制前登录名或应用程序可以使用的服务器资源的最大量。该最大量必须是小于或等于 231 的正整数,或者为 null 以保持现有值。下表列出了应为每种限制类型指定的值:

  • row_count – 在强制执行限制前一个查询可以返回的最大行数

  • elapsed_time – 强制执行限制前查询批处理或事务可以运行的最大秒数(按挂钟时间)

  • io_cost – 从优化程序的开销计算公式导出的无单位度量

  • tempdb_space – 限制单个会话可以具有的临时数据库中的页数。

    <enforced>

    确定是在执行查询前还是执行查询时强制应用限制。不能修改此值。将 null 用作占位符。

    <action>

    是在超出限制时采取的操作。以下代码应用于所有限制类型:

  • 1 – 发出警告

  • 2 – 中止查询批处理

  • 3 – 中止事务

  • 4 – 取消会话

  • null – 保持现有值

    <scope>

    是限制的作用域。不能修改此值。可以使用 null 作为占位符。

    示例

    示例 1

    修改 <weekends> 时间范围内应用于由“robin”使用的所有应用程序的资源限制:

    
    sp_modify_resource_limit robin, NULL, weekends, row_count, 3000, NULL, 
        1, NULL
    

    设置该限制后,当预计查询返回超过 3000 行时,系统将发出警告。

    示例 2

    修改每周 7 天、每天 24 小时应用于 <acctg> 应用程序的资源限制:

    
    sp_modify_resource_limit NULL, acctg, "at all times", elapsed_time, 
        45, 2, 2, 6
    

    设置该限制后,当预估查询处理时间超过 45 秒时,系统将中止查询批处理。

    示例 3

    此例更改资源限制的值,该资源限制在 tu_wed_7_10 时间范围内限制 <payroll> 应用程序的所有用户的经历时间:

    
    sp_modify_resource_limit NULL, payroll, tu_wed_7_10, elapsed_time, 90, null, null, 2
    

    经历时间的限制值从 120 秒减少到 90 秒。执行时间、采取的措施和作用域的值都保持不变。

    示例 4

    此例更改资源限制采取的措施,该资源限制在 saturday_night 时间范围内限制“joe_user”运行的所有即席查询和应用程序的行计数。以前代表采取措施的值是 3,即查询超过指定的行计数时将中止事务。新值为 2,即中止查询批处理。限制类型、执行时间和作用域的值都保持不变:

    
    sp_modify_resource_limit joe_user, NULL,
    saturday_night, row_count, NULL, NULL, 2, NULL
    

    用法

    使用 sp_modify_resource_limit 时,还存在一些其它注意事项:

  • 不能更改对其应用了限制的登录名或应用程序,也不能指定新的时间范围、限制类型、强制时间或作用域。

  • 资源限制的修改将导致在该会话的下一查询批处理开始时,该登录名和/或应用程序的每一会话的限制被重新绑定。

  • SAP ASE 提供资源限制功能,帮助系统管理员防止查询和事务独占服务器资源。但是,只有将资源限制与时间范围绑定,才能完全指定资源限制条件。