sp_tableoption (Transact-SQL)sp_tableoption (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

オプションのユーザー定義テーブルの値を設定します。Sets option values for user-defined tables. sp_tableoption は、のテーブルの行内での動作を制御するために使用できますvarchar (max)nvarchar (max)varbinary (max)xmlテキストntextイメージ、または大きなユーザー定義型列。sp_tableoption can be used to control the in-row behavior of tables with varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, image, or large user-defined type columns.

重要

text in row 機能は、将来のバージョンの SQL ServerSQL Server では削除される予定です。The text in row feature will be removed in a future version of SQL ServerSQL Server. 大きな値データを格納するをお勧めを使用すること、 varchar (max)nvarchar (max)varbinary (max) データ型。To store large value data, we recommend that you use of the varchar(max), nvarchar(max) and varbinary(max) data types.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
sp_tableoption [ @TableNamePattern = ] 'table'   
     , [ @OptionName = ] 'option_name'   
     ,[ @OptionValue =] 'value'  

引数Arguments

[ @TableNamePattern =] 'テーブル'[ @TableNamePattern =] 'table'
ユーザー定義のデータベース テーブルの修飾付きまたは修飾なしの名前です。Is the qualified or nonqualified name of a user-defined database table. データベース名も含めてフル パスで指定した場合は、そのデータベース名は現在のデータベース名である必要があります。If a fully qualified table name, including a database name, is provided, the database name must be the name of the current database. 同時には複数のテーブルのテーブル オプションを設定できません。Table options for multiple tables can not be set at the same time. テーブルnvarchar (776) 、既定値はありません。table is nvarchar(776), with no default.

[ @OptionName =] 'option_name'[ @OptionName = ] 'option_name'
テーブル オプション名を指定します。Is a table option name. option_namevarchar (35) NULL の既定値はありません。option_name is varchar(35), with no default of NULL. option_name値は次のいずれかを指定できます。option_name can be one of the following values.

[値]Value 説明Description
一括読み込みでテーブル ロックtable lock on bulk load 無効である場合 (既定)、ユーザー定義テーブル上で行ロックを取得するための一括読み込み処理が行われます。When disabled (the default), it causes the bulk load process on user-defined tables to obtain row locks. 有効な場合、一括更新ロックを取得するユーザー定義テーブルの一括読み込み処理が発生します。When enabled, it causes the bulk load processes on user-defined tables to obtain a bulk update lock.
行ロックを挿入します。insert row lock サポートされていません。No longer supported.

このオプションはロックの動作に影響を与えませんSQL ServerSQL Server既存のスクリプトおよびプロシージャの互換性のためだけに含まれています。This option has no effect on the locking behavior of SQL ServerSQL Server and is included only for compatibility of existing scripts and procedures.
行のテキストtext in row OFF または 0 (無効、既定値)、現在の動作は変更されませんし、行内 BLOB はありません。When OFF or 0 (disabled, the default), it does not change current behavior, and there is no BLOB in row.

指定した場合と@OptionValueon (有効) または 24 ~ 7,000 の新しい整数値テキストntext、またはイメージ文字列は、データ行に直接格納されます。When specified and @OptionValue is ON (enabled) or an integer value from 24 through 7000, new text, ntext, or image strings are stored directly in the data row. すべての既存の BLOB (バイナリ ラージ オブジェクト:テキストntext、またはイメージデータ)、BLOB 値が更新されたときに、text in row 形式に変更されます。All existing BLOB (binary large object: text, ntext, or image data) will be changed to text in row format when the BLOB value is updated. 詳細については、「解説」を参照してください。For more information, see Remarks.
large value types out of rowlarge value types out of row 1 = varchar (max)nvarchar (max)varbinary (max)xmlされ、テーブル内の大きなユーザー定義型 (UDT) 列が格納されますルートに 16 バイトのポインターと共に、行の出力。1 = varchar(max), nvarchar(max), varbinary(max), xml and large user-defined type (UDT) columns in the table are stored out of row, with a 16-byte pointer to the root.

0 = varchar (max)nvarchar (max)varbinary (max)xmlおよび大きな UDT 値は、上限に達するまで、データ行に直接格納されます8,000 バイトのと、レコードの値に収まる限りです。0 = varchar(max), nvarchar(max), varbinary(max), xml and large UDT values are stored directly in the data row, up to a limit of 8000 bytes and as long as the value can fit in the record. 値がレコードに収まらない場合には、ポインターが行内に格納され、残りは行外の LOB ストレージ領域に格納されます。If the value does not fit in the record, a pointer is stored in-row and the rest is stored out of row in the LOB storage space. 0 が既定値です。0 is the default value.

大きなユーザー定義型 (UDT) の適用対象: SQL Server 2008SQL Server 2008 から SQL Server 2017SQL Server 2017Large user-defined type (UDT) applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

TEXTIMAGE_ON オプションを使用してCREATE TABLEラージ データ型の記憶域の場所を指定します。Use the TEXTIMAGE_ON option of CREATE TABLE to specify a location for storage of large data types.
Vardecimal ストレージ形式vardecimal storage format 適用対象: SQL Server 2008SQL Server 2008 から SQL Server 2017SQL Server 2017Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

TRUE、ON、または 1 の場合、指定されたテーブルでは vardecimal ストレージ形式が有効です。When TRUE, ON, or 1, the designated table is enabled for vardecimal storage format. FALSE、OFF、または 0 と、テーブルは vardecimal ストレージ形式が無効です。When FALSE, OFF, or 0, the table is not enabled for vardecimal storage format. データベースは vardecimal ストレージ形式を使用して有効になっている場合にのみ、Vardecimal ストレージ形式を有効にすることができますsp_db_vardecimal_storage_formatします。Vardecimal storage format can be enabled only when the database has been enabled for vardecimal storage format by using sp_db_vardecimal_storage_format. SQL Server 2008SQL Server 2008以降では、 vardecimalストレージ形式が非推奨とされます。In SQL Server 2008SQL Server 2008 and later, vardecimal storage format is deprecated. 代わりに行の圧縮を使用してください。Use ROW compression instead. 詳細については、「 Data Compression」を参照してください。For more information, see Data Compression. 0 が既定値です。0 is the default value.

[ @OptionValue =] ''[ @OptionValue =] 'value'
かどうか、 option_nameが有効 (TRUE、ON、または 1) か無効 (FALSE、OFF、または 0)。Is whether the option_name is enabled (TRUE, ON, or 1) or disabled (FALSE, OFF, or 0). varchar (12) 、既定値はありません。value is varchar(12), with no default. は大文字と小文字が区別されません。value is case insensitive.

text in row オプションの有効値は、0、ON、OFF、または 24 ~ 7,000 の整数です。For the text in row option, valid option values are 0, ON, OFF, or an integer from 24 through 7000. ときには ON、制限の既定値は 256 バイトです。When value is ON, the limit defaults to 256 bytes.

リターン コードの値Return Code Values

0 (成功) またはエラーの数 (失敗)0 (success) or error number (failure)

コメントRemarks

sp_tableoption は、ユーザー定義テーブルのオプション値を設定するためにのみ使用できます。sp_tableoption can be used only to set option values for user-defined tables. テーブル プロパティを表示するには、OBJECTPROPERTY を使用します。To display table properties, use OBJECTPROPERTY.

sp_tableoption の text in row オプションを有効または無効にできるのは、テーブルにテキスト列が含まれている場合だけです。The text in row option in sp_tableoption can be enabled or disabled only on tables that contain text columns. テーブルには、テキスト列がない場合SQL ServerSQL Serverエラーが発生します。If the table does not have a text column, SQL ServerSQL Server raises an error.

Text in row オプションが有効にすると、 @OptionValue BLOB の行に格納される最大サイズを指定するパラメーターを使用します。When the text in row option is enabled, the @OptionValue parameter allows users to specify the maximum size to be stored in a row for a BLOB. 既定値は 256 バイトですが、値の範囲は 24 ~ 7,000 バイト。The default is 256 bytes, but values can range from 24 through 7000 bytes.

テキストntext、またはイメージ文字列は、次の条件に該当する場合、データ行に格納されます。text, ntext, or image strings are stored in the data row if the following conditions apply:

  • 行内テキストが有効になっているとします。text in row is enabled.

  • 文字列の長さがで指定された制限よりも短い @OptionValueThe length of the string is shorter than the limit specified in @OptionValue

  • データ行に十分な使用可能領域がある。There is enough space available in the data row.

読み取りと書き込みの BLOB 文字列は、データ行に格納されている、ときに、テキストntext、またはイメージほど高速の読み取りまたは書き込みの文字やバイナリ文字列で文字列を指定できます。When BLOB strings are stored in the data row, reading and writing the text, ntext, or image strings can be as fast as reading or writing character and binary strings. SQL ServerSQL Server 読み取りまたは書き込みの BLOB 文字列を別のページにアクセスすることはありません。does not have to access separate pages to read or write the BLOB string.

場合、テキストntext、またはイメージ文字列が指定された制限または行で使用可能な領域を超える、ポインターが代わりの行に格納されます。If a text, ntext, or image string is larger than the specified limit or the available space in the row, pointers are stored in the row instead. それでも、行に BLOB 文字列を格納するための条件が適用されます。ポインターを格納するデータ行に十分な領域が必要があります。The conditions for storing the BLOB strings in the row nonetheless apply: There must be enough space in the data row to hold the pointers.

BLOB 文字列やテーブルの行に格納されているポインターが可変長の文字列に同様に扱われます。BLOB strings and pointers stored in the row of a table are treated similarly to variable-length strings. SQL ServerSQL Server 文字列またはポインターを格納するために必要なバイト数のみを使用します。uses only the number of bytes required to store the string or the pointer.

行のテキストを有効にするとすぐに、既存の BLOB 文字列は変換されません。Existing BLOB strings are not converted immediately when text in row is first enabled. 文字列は、それらが更新されたときに初めて変換されます。The strings are converted only when they are updated. 同様に、ときにテキストが in row オプションの制限値を増やすと、テキストntext、またはイメージ新しい制限に準拠するデータ行には既に文字列は変換されません時間まで更新されます。Likewise, when the text in row option limit is increased, the text, ntext, or image strings already in the data row will not be converted to adhere to the new limit until the time they are updated.

注意

text in row オプションを無効にする、またはオプションの制限値を小さくした場合は、BLOB を変換する必要があります。したがって、変換される BLOB 文字列の数によっては、処理に時間がかかる場合があります。Disabling the text in row option or reducing the limit of the option will require the conversion of all BLOBs; therefore, the process can be long, depending on the number of BLOB strings that must be converted. テーブルは、変換処理中にロックされています。The table is locked during the conversion process.

テーブル変数を返す関数を含む、テーブル変数は、in row オプションが 256 のインライン上限の既定値で有効になっているテキストを自動的に持ちます。A table variable, including a function that returns a table variable, automatically has the text in row option enabled with a default inline limit of 256. このオプションを変更することはできません。This option cannot be changed.

Text in row オプションは、TEXTPTR、WRITETEXT、UPDATETEXT、および READTEXT 関数をサポートします。The text in row option supports the TEXTPTR, WRITETEXT, UPDATETEXT, and READTEXT functions. ユーザーは、パーツの SUBSTRING() 関数を使用して BLOB を読み取ることができますが、行内テキスト ポインターが別の期間およびその他のテキスト ポインターからの数の制限があることを忘れないでください。Users can read parts of a BLOB with the SUBSTRING() function, but must remember that in-row text pointers have different duration and number limits from other text pointers.

テーブルを vardecimal ストレージ形式から通常の decimal ストレージ形式に戻すには、データベースを単純復旧モードにする必要があります。To change a table from vardecimal storage format back to the normal decimal storage format, the database must be in SIMPLE recovery mode. 復旧モードを変更すると、バックアップに必要なログ チェーンが途切れてしまいます。したがって、テーブルから vardecimal ストレージ形式を削除した後で、データベースの完全バックアップを作成する必要があります。Changing the recovery mode will break the log chain for backup purposes, therefore you should create a full database backup after removing the vardecimal storage format from a table.

既存の LOB データ型列 (text、ntext、または image) を小さな規模の大きな値の型 (varchar (max)、nvarchar (max)、または varbinary(max))、およびほとんどのステートメントはいない環境内で大きな値型の列の参照を検討してくださいに変換する場合変更するlarge_value_types_out_of_row1最適なパフォーマンスを向上させます。If you are converting an existing LOB data type column (text, ntext, or image) to small-to-medium large value types (varchar(max), nvarchar(max), or varbinary(max)) , and most statements do not reference the large value type columns in your environment, consider changing large_value_types_out_of_row to 1 to gain optimal performance. ときに、 large_value_types_out_of_rowオプションの値を変更すると、既存の varchar (max)、nvarchar (max)、varbinary (max)、および xml 値はすぐに変換されません。When the large_value_types_out_of_row option value is changed, existing varchar(max), nvarchar(max), varbinary(max), and xml values are not immediately converted. 文字列のストレージは、後で文字列が更新されたときに変更されます。The storage of the strings is changed as they are subsequently updated. テーブルに挿入される新しい値は、有効なテーブル オプションに従って格納されます。Any new values inserted into a table are stored according to the table option in effect. 即時の結果を得るには、いずれか、データのコピーを作成しを変更した後、テーブルを再作成し、 large_value_types_out_of_row設定またはそれ自体に各小規模から中に値型の列を更新できるようにの記憶域、文字列が有効なテーブル オプションを使用して変更されます。For immediate results, either make a copy of the data and then repopulate the table after changing the large_value_types_out_of_row setting or update each small-to-medium large value types column to itself so that the storage of the strings is changed with the table option in effect. 更新または再作成の後でテーブルのインデックスを再構築し、テーブルを圧縮することを検討します。Consider rebuilding the indexes on the table after the update or repopulation to condense the table.

アクセス許可Permissions

Sp_tableoption を実行するには、テーブルに対する ALTER 権限が必要です。To execute sp_tableoption requires ALTER permission on the table.

使用例Examples

A.A. XML データの行外への格納Storing xml data out of the row

次の例では、ことを指定します、 xml内のデータ、HumanResources.JobCandidateテーブル行外に格納します。The following example specifies that the xml data in the HumanResources.JobCandidate table be stored out of row.

USE AdventureWorks2012;  
GO  
EXEC sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;  

B.B. テーブルで vardecimal ストレージ形式を有効にします。Enabling vardecimal storage format on a table

次の例では、変更、Production.WorkOrderRoutingを格納するテーブル、decimalのデータ型のvardecimalストレージ形式です。The following example modifies the Production.WorkOrderRouting table to store the decimal data type in the vardecimal storage format.

USE master;  
GO  
-- The database must be enabled for vardecimal storage format  
-- before a table can be enabled for vardecimal storage format  
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2012', 'ON';  
GO  
USE AdventureWorks2012;  
GO  
EXEC sp_tableoption 'Production.WorkOrderRouting',   
   'vardecimal storage format', 'ON';  

関連項目See Also

sys.tables (Transact-SQL) sys.tables (Transact-SQL)
OBJECTPROPERTY (Transact-SQL) OBJECTPROPERTY (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL) System Stored Procedures (Transact-SQL)
データベース エンジン ストアド プロシージャ(TRANSACT-SQL)Database Engine Stored Procedures (Transact-SQL)