设置用户定义表的选项值。sp_tableoption 可用于控制包含varchar(max)nvarchar(max)varbinary(max)xmltextntextimage 列的表的行内行为。


重要事项:

在 SQL Server 的将来版本中,将删除 text in row 功能。若要存储大值数据,建议您使用 varchar(max)nvarchar(max)varbinary(max) 数据类型。

Transact-SQL 语法约定

语法

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 可以是下列值之一。

说明

table lock on bulk load

禁用时(默认值),使用户定义表的大容量处理获得行锁。启用时,使用户定义表的大容量处理获得大容量更新锁。

insert row lock

SQL Server 2005 不支持。

SQL Server 的锁定策略为行锁定,并可能提升为页锁定或表锁定。此选项对 SQL Server 的锁定行为没有影响,保留此选项只是为了与现有脚本和过程兼容。

text in row

如果为 OFF0(禁用,默认值),则不更改当前行为,且在行中不存在 BLOB。

如果指定此值,并且 @OptionValue 设置为 ON(启用)或者是 247000 之间的一个整数值,则在数据行中直接存储新的 textntextimage 字符串。如果更新了 BLOB 值,则现有的所有 BLOB(二进制大型对象:textntextimage 数据)都将更改为 text in row 格式。有关详细信息,请参阅“备注”。

large value types out of row

1 = 表中的 varchar(max)nvarchar(max)varbinary(max)xml 列都存储在行外,用一个 16 个字节的指针指向根目录。

0 = varchar(max)nvarchar(max)varbinary(max)xml 值直接存储在数据行中(最大限制为 8000 字节,并且只要记录中可以容纳该值)。如果记录中容纳不下该值,则指针存储在行内,其余内容存储在 LOB 存储空间内的行外。

[ @OptionValue = ] 'value'

指示 option_name 被启用(trueon1)还是禁用(falseoff0)。value 的数据类型为varchar(12),无默认值。value 不区分大小写。

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

备注

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

sp_tableoption 中的 text in row 选项只能在包含文本列的表中启用或禁用。如果表不含文本列,SQL Server 将引发错误。

如果启用了 text in row 选项,@OptionValue 参数将允许用户为 BLOB 指定可在行中存储的最大大小。默认值为 256 字节,但是值可以介于 24 到 7000 个字节之间。

在满足以下条件时,数据行可以存储 textntextimage 字符串:

· 启用了 text in row

· 字符串的长度比 @OptionValue 中指定的限制值短。

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

数据行中存储 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 选项,并将 inline limit 值默认为 256 字节。此选项不可更改。

sp_tableoption的更多相关文章

  1. [转]SQL Server表锁定原理以及如何解除锁定

    2010年10月13日 12:46 来源:部松昌的博客 作者:部松昌 编辑:胡铭娅 一: 下面以AdventureWorks2008为示例数据库做简要的说明,过滤掉一般的数据库的共享锁, 作为示例必须 ...

  2. SQL Server:服务器角色

    角色 描述 sysadmin 执行SQL Server中的任何动作 serveradmin 配置服务器设置 setupadmin 安装复制和管理扩展过程 securityadmin 管理登录和CREA ...

  3. SQL Server开发接口生成方法

    为提高开发效率,生成固定格式的接口是必须的,以下以提供新增/修改/删除/读取接口为例: 以常见的表结构为例,特殊表结构可自己尝试去调整方法 主要通过系视图 sys.columns生成方法:为包含列的对 ...

  4. Sql Server 常用系统存储过程大全

    -- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_logi ...

  5. [转]如何将SQL Server表驻留内存和检测

    注意这个功能在SQL2005后已经废弃,因为SQL2005会自动管理哪些表常驻内存. 将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及 ...

  6. sql 里 text类型的操作(转载)

    SQL Server中TEXT类型字段值在数据库中追加字符串方法 对text类型字段值进行追加更新的操作,一开始用了简单的update语句试了试,有错误,原来text.ntext类型的字段不能和 va ...

  7. SQL2005中的事务与锁定(五)- 转载

    ------------------------------------------------------------------------ -- Author : HappyFlyStone - ...

  8. 【转】MSSQLServer数据库事务锁机制分析

    锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调 ...

  9. (转)SQL SERVER的锁机制(一)——概述(锁的种类与范围)

    锁定:通俗的讲就是加锁.锁定是 Microsoft SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 定义:当有事务操作时,数据库引擎会要求不同类型的锁定,如相关数 ...

随机推荐

  1. C#基础,目录

    首先,要说明一下本系列会以使用C#为侧重点,不会系统的.大篇量的去解说一些名词,比如:runtime.IL等.文章会在合适的时候对用到的基本概念进行简述.如果你是初学者,建议你也不要过度的去纠结,等你 ...

  2. 【Keras】从两个实际任务掌握图像分类

    我们一般用深度学习做图片分类的入门教材都是MNIST或者CIFAR-10,因为数据都是别人准备好的,有的甚至是一个函数就把所有数据都load进来了,所以跑起来都很简单,但是跑完了,好像自己还没掌握图片 ...

  3. How to support comparators in our sort implementations?

    上图是普林斯顿算法课part1.Mergesort章节给出的参考代码,可以发现这个代码有三处警告.造成的隐患就是我们无法在类型检查时发现送入sort()函数的数组元素类型和Comparator的泛型不 ...

  4. Session与Cookie的概念原理

    前言: 本文没有任何代码,内容全部都是概念与运行原理,在使用一个技术前一定要弄清他的本质,下面会讲Session.Cookie.ServletContext的概念与他们的联系区别 Session概念 ...

  5. 》》mui--图片轮播

    mui框架内置了图片轮播插件,通过该插件封装的JS API,用户可以设定是否自动轮播及轮播周期,如下为代码示例: //获得slider插件对象 var gallery = mui('.mui-slid ...

  6. Java 中 for each

    格式: for(type element: array) {       System.out.println(element); } //ex:{ public static void main(S ...

  7. LeetCode139:Word Break

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  8. Android开发中有用工具之--Log工具类

    在开发的过程中.我们常常会使用Log来输出日志,帮助我们来调试程序 可是有时候并不能全然满足我们的须要 ,比方我想知道这个日志信息是来自于哪一个包 哪一个类 所以我们封装一个这个Log类.方便我们的使 ...

  9. 为什么说要搞定微服务架构,先搞定RPC框架?

    今天开始聊一些微服务的实践,第一块,RPC框架的原理及实践,为什么说要搞定微服务架构,先搞定RPC框架呢? 一.需求缘起 服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队 ...

  10. OS X第三方类库管理工具cocoapods入门

    一.简介 什么是cocoapods?--是OS X和iOS下一个第三方类库管理工具.通过cocoapods,可以为项目添加"Pods"依赖库,并且管理其版本. cocoapods好 ...