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

sp_dbextend

说明

这些策略存储在 master 数据库的 sysattributes 表中。

所有参数都是字符串参数:

语法


sp_dbextend 'help'[, <command>]

sp_dbextend [ ['set', ['threshold', <dbname>, <segmentname>, <freespace> | 
	'database', <dbname>, <segmentname>{[[, <growby>][, <maxsize> ] ]} | 
	'device', <devicename>{[[, <growby >][, <maxsize> ] ] }] |
	'clear', 'threshold', <dbname>, <segmentname> 

sp_dbextend 'clear', 'database'[, <dbname>[, <segmentname>] ]

sp_dbextend 'clear', 'device'[, <devicename>]

sp_dbextend 'modify', 'database', <dbname>, <segmentname>, 
	{ 'growby' | 'maxsize' }, <newvalue>

sp_dbextend 'modify', 'device', <devicename>, { 'growby' | ' maxsize ' }, 
	<newvalue>

sp_dbextend { 'list' | 'listfull' }[, 'database'[, <dbname>[, <segmentname> 
	[, <order_by_clause> ] ] ] ]

sp_dbextend { 'list' | 'listfull' }[, 'device'[, <devicename>[, <order_by_clause>] ] ]

sp_dbextend { 'list' | 'listfull' }, [ 'threshold'[ , @<dbname> 
	[ , @<segmentname> ] ] ]

sp_dbextend 'check', 'database'[, <dbname>[, <segmentname>] ]

sp_dbextend {'simulate' | 'execute'}, <dbname>, <segmentname>[, <iterations> ]

sp_dbextend 'trace', {'on' | 'off'}

sp_dbextend 'reload [defaults]'

sp_dbextend { 'enable' | 'disable' }, 'database'[, <dbname>[, <segmentname>] ]

sp_dbextend 'who'[, '<spid>' | 'block' | 'all' ]

参数

set

设置应引发数据库、段或设备的阈值。参数包括:

  • 'threshold', <dbname>, <segmentname>, <freespace> – 指定在指定的数据库和段上安装阈值的可用空间级别。

    使用大小单位指示符(例如兆字节)指定 。如果未指定任何大小单位,则认为 的值是段中的千字节数。

  • 'database', <dbname>, <segmentname> {[ [, <growby> ] [, <maxsize> ] ]} – 指定数据库/段对的名称、数据库更改幅度以及数据库的最大大小(达到该最大大小时,扩展进程停止)。

    <growby> – 是每次扩展尝试时数据库增长的比率,以单位指示符或百分比值表示。

    <maxsize> 是段的最大大小,达到最大大小后不再进行扩展。这两个参数都是可选的。

  • 'device', <devicename> { [ [, <growby >] [, <maxsize> ] ] }] – 定义设备的增长率和可以增长到的最大大小,用单位指示符或百分比值表示。设备中的 <maxsize> 受 OS 磁盘限制。

    clear

    清除指定数据库和段或者指定设备以前设置的扩展规则。

    modify

    修改数据库和段以前设置的特定于站点的策略,例如 <growby><maxsize>

    使用 <newvalue> 指定为自动扩展设置的新值。

    list

    简要列出指定数据库、段、设备或指定段的阈值的现有规则,并以一种可读格式显示来自 master.dbo.sysattributes 的数据。允许您按每个数据库或每个设备查看规则。

    显示当前有效的规则。

    使用 <order_by_clause> 生成与缺省的名称、类型排序顺序不同的列表。

    使用 threshold 可以显示当前在指定数据库中(使用 @dbname)和指定段中(使用 @segment name)安装的所有阈值。

    listfull

    完全列出特定于站点的策略规则,并在 sysattributes 表中包括一个 comment 列,该列显示的 datetime 戳指出规则是何时设置、何时最后修改的。

    check

    检查当前策略并验证它们与每个段中的当前空间布局是否一致。如果发现任何策略设置多余、无效或不正确,则将显示一条警告消息。

    simulate

    根据 set 命令实施的当前策略集,模拟执行在运行期执行的数据库或设备扩展方案。

    <iterations> 指定模拟扩展的次数。

    execute

    使用当前策略集执行实际数据库/段或设备扩展。

    reload [defaults]

    在所有数据库、段和设备中用 <growby><maxsize> 的系统提供的缺省值重新初始化 sysattributes,并将数据库或设备回复到初始缺省行为。

    reload 不删除用户指定的策略。

    help

    提供所有命令参数(例如 set 或 list)的帮助信息或任何单个命令的帮助信息。

    trace

    跟踪所有扩展进程中的阈值过程执行逻辑。

    enable | disable

    在指定数据库段或设备上启用或禁用自动扩展过程。

    who

    显示当前运行的任何活动扩展进程。使用:

  • ‘<spid>’ 限制特定 spid 的输出。

  • block – 显示当前导致扩展进程阻塞的任务。

  • all – 显示当前所有活动的任务。

    <freespace>

    指定可用空间为何值时在指定的段上安装阈值过程。一定要使用大小单位指示符(例如兆字节)来指定 <freespace>

    <dbname>

    是在其中安装阈值的数据库的名称。

    <segmentname>

    是包含在数据库 <dbname> 中的段。

    <devicename>

    是相关设备的逻辑名。

    <newvalue>

    指定当您修改数据库/段对或设备的策略时为自动扩展设置的新值。

    <order_by_clause>

    生成与 <list> 命令中的缺省排序不同顺序的列表。缺省顺序是名称、类型。

    <iterations>

    指定模拟或执行扩展的次数。

    <growby>

    指定每次尝试执行阈值过程时指定的数据库段或设备增长的比率,以单位指示符或百分比值表示。

    <maxsize>

    是段/数据库对或设备的最大大小,当达到该大小时,自动扩展必须停止。

    <maxsize> 是段的最大大小,当达到该大小时自动扩展进程停止,该值并不是数据库的最大大小。

    您可以将 <maxsize> 设置为大于设备上可用磁盘空间总量的值,但进行扩展尝试时实际扩展将受可用磁盘空间的限制。

    示例

    Set Thresholds

    在数据库 pubs2 中的日志段上安装 100 MB 的空间扩展阈值:

    
    sp_dbextend 'set', 'thresh', pubs2, logsegment, '100m'
    

    Set Database

    为 logsegment 段安装策略,每次扩展尝试的增长率为 100 MB:

    
    sp_dbextend 'set', 'database', pubs2, logsegment, '100m'
    

    Set Device

    扩展此设备直到达到 OS 磁盘空间限制或设备大小达到 4 TB:

    
    sp_dbextend 'set', 'device', pubs2-datadev1, '100m'
    

    Clear

    说明如何清除以前在 pubs2 中 logsegment 上安装的所有空间扩展阈值:

    
    sp_dbextend 'clear', 'thresh', pubs2, logsegment
    

    您还可以清除在 pubs2 中的段 dataseg1 上安装的可用空间为 200 MB 的空间扩展阈值:

    
    sp_dbextend 'clear', 'thresh', pubs2, dataseg1, '200m'
    

    Modify

    将每次扩展尝试的增长率指定为当前值的 5%:

    
    sp_dbextend 'modify', 'da', pubs2, logsegment, 'growby', '5%'
    

    如果以前未定义 ,则命令可能失败:

    
    sp_dbextend 'modify', 'device', pubs2_log_dev, 'maxsize', '2.3g'
    

    list

    简要列出所有数据库和设备的规则:

    
    sp_dbextend 'list'
    

    以下命令列出名称类似于“'pubs%'”的所有数据库的规则:

    
    sp_dbextend 'list', 'database', 'pubs%'
    

    Listfull

    列出所有数据库和设备的规则,其中包括一个显示 datetime 戳的 comment 列:

    
    sp_dbextend 'listfull'
    

    List Threshold

    从 pubs2 数据库中发出该命令时,将列出 pubs2 数据库中各段的阈值设置:

    
    sp_dbextend 'list', 'threshold'
    

    要检查特定段上的阈值,请使用:

    
    sp_dbextend 'list', 'threshold', pubs2, 'logsegment'
    

    Simulate

    模拟扩展两次,两次扩展都没有达到阈值:

    
    sp_dbextend 'simulate', pubs2, logsegment, '2'
    

    Execute

    执行自动扩展过程:

    
    sp_dbextend 'execute', pubs2, logsegment
    

    Help

    获得特定命令的帮助:

    
    sp_dbextend help, 'set'
    

    用法

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

  • 在任何给定的数据库/段对上只能设置一个自动扩展阈值。如果尝试安装阈值过程的另一个实例,即使是在不同的可用空间值上,也会引发错误。

  • 您不能设置系统提供的缺省值,只能修改它们。在修改系统缺省值之后,可以通过重新运行 installdbextend 脚本或使用 reload defaults 命令重新设置它们。

  • 若要在特定段中禁止自动增长,请将 <growby> 或 <maxsize> 指定为 0 或根本不安装该阈值过程。如果为此参数指定 NULL,则缺省使用系统指定的缺省 <growby> 率。

  • 缺省情况下,如果设备的大小大于 40MB,则数据库的大小将增大 10%。如果数据库的大小小于 40 MB,则数据库的大小将增大 4 MB。但是,您可以根据您的站点需要指定数据库大小调整限制。

  • 对于 default 数据库,没有系统指定的最大大小。如果未指定任何 <maxsize> 值,则数据库的大小仅受数据库设备物理大小的限制。

  • 若要关闭特定设备上的自动增长功能,请将 <growby> 或 <maxsize> 指定为 0。如果未指定 <growby> 的值,则使用缺省扩展率。

  • 当使用此存储过程清除阈值时,<dbname> 和 <segmentname> 是必需的参数。

  • 当使用此存储过程清除数据库时,如果未提供 <dbname><segmentname>,则将删除当前数据库和其中所有段的所有策略规则(即 master.dbo.sysattributes 中的所有相关行)。若要将所有设置恢复为缺省值并重新启动,这是一个不错的方法。

  • 当使用此存储过程清除设备时,如果未提供 <devicename> 的值,则不会清除任何策略规则。您可以提供 <devicename> 来清除单个设备的策略规则或使用“%”清除所有设备的策略。

  • 您可以使用模式指定 <dbname>、<devicename> 和 <segmentname>,以便对名称模式符合指定模式的对象执行 clear、enable、disable 和 list 操作。

  • 必须先用 set 命令设置一个值或属性,然后才能修改它。如果先前未设置任何值,则 modify 失败。<growby> 和 <maxsize> 会被修改为 <newvalue> 指定的新值

  • <newvalue> 中指定的新值将在随后的扩展数据库或设备的尝试中一直有效。即使 <newvalue> 小于数据库、段或设备的当前值。对象也不会缩减。<newvalue> 仅指定以后的扩展,不会影响当前大小。

  • 提供 <dbname><segmentname> 可以获得个别数据库和其中的段的策略规则。

  • 如果对数据库使用 list 并且不提供任何 <dbname><segmentname>,则将列出当前数据库中所有段的所有策略规则(即,master.dbo.sysattributes 中的行)。

  • 如果对设备名使用 list 并且不提供任何 <devicename>,则将列出所有设备的缺省策略规则。您可以通过提供 <devicename> 对列出的内容进行过滤以列出单个设备的策略规则或对 <devicename> 使用模式指示符。

  • 一次只能模拟一个数据库/段对的扩展。<dbname><segmentname> 都是必需的参数。使用 execute 或 simulate 命令时,不能在 <dbname><segmentname> 中使用通配符模式。

  • 设备的最大大小是 4TB。

  • 在使用 modify 和 simulate 后,请使用 <reload> 重新初始化您的数据库和设备。<reload> 将删除 master.dbo.sysattributes 中描述系统缺省行为的任何现有行,然后装载新行。

  • trace 打开或关闭整个服务器的跟踪功能。如果 trace 打开,当触发阈值时,消息出现在服务器错误日志中。仅将 trace 用于故障排除。