• 相关软件
    >sp_tableoption 创建者:webmaster 更新时间:2006-02-16 15:51

    为用户定义表设置选项值。sp_tableoption 可以用来在具有 textntext image 列的表上启用 text in row 功能。



    语法


    sp_tableoption [ @TableNamePattern = ] 'table'

        , [ @OptionName = ] 'option_name'

        , [ @OptionValue = ] 'value'



    参数


    [@TableNamePattern =] 'table'



    是限定的或非限定的用户定义数据库表的名称。如果提供了一个完全限定的表名,包括数据库名,那么该数据库名必须是当前数据库的名称。多个表的表选项的设置不能一次完成。table_pattern 的数据类型为 nvarchar(776),没有默认设置。



    [@OptionName =] 'option_name'



    是表选项名。option_name 的数据类型为 varchar(35),默认设置不是 NULL。option_name 可以有下列值。





























    描述
    pintable当禁用时(默认值),它将表标记为不再驻留内存。启用时,将表标记为驻留内存。
    table lock on bulk load禁用时(默认值),用户定义表的大容量处理获得行锁。启用时,用户定义表的大容量处理获得大容量更新锁。
    insert row lockMicrosoft® SQL Server™ 2000 中不支持该值。

    对于 SQL Server 6.5 版而言,在指定表上启用或禁用插入行锁定 (IRL) 操作。在 SQL Server 7.0 中,行级锁定默认为启用。SQL Server 的锁定策略为行锁定,并可能提升为页或表锁定。这个选项并不改变 SQL Server 的加锁行为(它没有影响),包含它只是为了与现有脚本和过程兼容。


    text in row当为 OFF0(禁用,默认值)时,它不更改当前行为,且在行中不存在 BLOB。

    指定该值且 @OptionValueON(已启用)或从 247000 的整数值时,直接在数据行中存储新的 textntextimage 字符串。更新 BLOB 值时,所有现有的 BLOB(textntextimage 数据)都将更改成 text in row 格式。有关更多信息,请参见注释部分。





    [ , [ @OptionValue = ] 'value' ]



    表示是启用 option_nametrueon 1)还是禁用 option_namefalseoff0)。value 的数据类型为 varchar(12),没有默认设置。value 不区分大小写。



    对于 text in row 选项,有效选项值是 0onoff,或从 24 到 7000 的整数。当 valueon 时,默认的限制为 256 字节。



    返回代码值


    0(成功)或错误号(失败)



    注释


    sp_tableoption 仅可用于设置用户定义表的选项值。若要显示表属性,请使用 OBJECTPROPERTY。



    sp_tableoptiontext in row 选项只能在含有文本列的表中启用或禁用。若表不含文本列,SQL Server 将产生错误。



    当启用 text in row 选项时,@OptionValue 参数使用户得以指定存储在行中的 BLOB(二进制大对象:textntextimage 数据)的最大值。默认设置是 256 字节,但是行中的值可以在 24 到 7000 字节范围内变化。



    如果应用下列条件,则将 textntextimage 字符串存储在数据行中:


    1. 启用 text in row



    2. 字符串的长度比 @OptionValue 所指定的限制短



    3. 数据行中有足够的可用空间。



    当 BLOB 字符串存储在数据行中时,读取和写入 textntextimage 字符串可以与读取或写入字符串和二进制字符串一样快。SQL Server 不必访问单独的页以读取或写入 BLOB 字符串。



    如果 textntextimage 字符串比行中所指定的限制或可用空间大,则将指针存储在该行中。在行中存储 BLOB 字符串的条件仍然适用,但是:数据行中必须有足够的空间容纳指针。



    将存储在表行中的 BLOB 字符串和指针视为类似于可变长度的字符串。SQL Server 仅使用存储字符串或指针所需的字节数。



    首先启用 text in row 时,不立即转换现有的 BLOB 字符串。仅当更新字符串时才转换它们。同样,text in row 选项限制增加时,将不转换已在数据行中的 textntextimage 字符串以遵从新限制,直到更新它们。



    说明  禁用 text in row 选项或减小该选项的限制将需要转换所有的 BLOB,因此进程可能较长,这取决于必须转换的 BLOB 字符串数。在执行转换进程的过程中锁定表。



    一个 table 变量,包括返回 table 变量的函数,自动启用 text in row 选项,并具备 256 字节的 inline limit 默认值。这一选项不可更改。



    text in row 支持 TEXTPTRWRITETEXTUPDATETEXT READTEXT 函数。用户可以使用 SUBSTRING() 函数读取 BLOB 的部分,但是必须记住,行内文本指针与其它文本指针相比有不同的有效期和个数限制。有关更多信息,请参见管理 ntext、text 和 image 数据



    权限


    只有 sysadmin 固定服务器角色的成员可以修改表选项 pintable



    sysadmin 固定服务器角色成员,db_ownerdb_ddladmin 固定数据库角色成员以及表所有者,都可以修改任何用户定义表的 table lock on bulk loadtext in row 选项。其他用户只能修改自己拥有的表的选项。



    示例


    A. 启用 Northwind 数据库中表 'orders' 的 'text in row' 选项。


    EXEC sp_tableoption 'orders', 'text in row', 'ON'


    B. 启用 Northwind 数据库中表 'orders' 的 'text in row' 选项,并将 inline limit 设置为 1000。


    EXEC sp_tableoption 'orders', 'text in row', '1000'


    C. 启用 Northwind 数据库中表 'orders' 的 'text in row' 选项,并将 inline limit 设置为 23,这已超出允许范围。


    sp_tableoption 'orders', 'text in row', '23'


    会产生错误信息,提示参数超出范围。



    D. 禁用 Northwind 数据库中表 'orders' 的 'text in row' 选项。


    EXEC sp_tableoption 'orders', 'text in row', 'off'


    -或-



    EXEC sp_tableoption 'orders', 'text in row', '0'
    相关文章
    本页查看次数: