sp_changearticle (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
トランザクション パブリケーションまたはスナップショット パブリケーション内のアーティクルのプロパティを変更します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
sp_changearticle [ [@publication= ] 'publication' ]
[ , [ @article= ] 'article' ]
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
引数
[ @publication = ] 'publication'
アーティクルを含むパブリケーションの名前を指定します。 publication は sysname で、既定値は NULL です。
[ @article = ] 'article'
プロパティを変更するアーティクルの名前を指定します。 article は sysname で、既定値は NULL です。
[ @property = ] 'property'
変更するアーティクル プロパティです。 property is nvarchar(100).
[ @value = ] 'value'
アーティクル プロパティの新しい値です。 値 は nvarchar(255)です。
次の表では、アーティクルのプロパティとそれらのプロパティの値について説明します。
プロパティ | 値 | 説明 |
---|---|---|
creation_script | ターゲット テーブルの作成に使用するアーティクル スキーマ スクリプトのパスと名前。 の既定値は NULL です。 | |
del_cmd | 実行する DELETE ステートメントです。指定しないと、ログから作成されます。 | |
説明 | 記事の新しい説明エントリ。 | |
dest_object | これは旧バージョンとの互換性のために用意されています。 dest_tableを使用 します。 | |
dest_table | 新しい変換先テーブル。 | |
destination_owner | コピー先オブジェクトの所有者の名前。 | |
フィルター | テーブルをフィルターによって選択 (行方向のフィルター選択) するために使用される新しいストアド プロシージャです。 の既定値は NULL です。 ピアツーピア レプリケーションのパブリケーションでは変更できません。 | |
fire_triggers_on_スナップショット | true | レプリケートされたユーザー トリガーは、初期スナップショットが適用されたときに実行されます。 注: トリガーをレプリケートするには、schema_optionのビットマスク値に0x100値を含める必要があります。 |
false | 初期スナップショットが適用されたときに、レプリケートされたユーザー トリガーが実行されません。 | |
identity_range | サブスクライバーで割り当てられた、割り当て済みの ID 範囲のサイズを管理します。 ピア ツー ピア レプリケーションではサポートされません。 | |
ins_cmd | 実行する IN Standard Edition RT ステートメント。それ以外の場合は、ログから作成されます。 | |
pre_creation_cmd | 同期が適用される前に、レプリケーション先のテーブルを削除したり、切り捨てたりできる作成準備コマンドです。 | |
なし | コマンドを使用しません。 | |
drop | コピー先テーブルを削除します。 | |
delete | コピー先テーブルを削除します。 | |
truncate | コピー先テーブルを切り捨てます。 | |
pub_identity_range | サブスクライバーで割り当てられた、割り当て済みの ID 範囲のサイズを管理します。 ピア ツー ピア レプリケーションではサポートされません。 | |
schema_option | 特定のアーティクルのスキーマ生成オプションのビットマップを指定します。 schema_optionは binary(8) です。 詳細については、このトピックで後述する「解説」を参照してください。 | |
0x00 | スナップショット エージェントによるスクリプト作成を無効にします。 | |
0x01 | オブジェクトの作成 (CREATE TABLE、CREATE PROCEDURE など) を生成します。 | |
0x02 | 定義されている場合、アーティクルの変更を反映するストアド プロシージャを生成します。 | |
0x04 | ID 列は、IDENTITY プロパティを使用してスクリプト化されます。 | |
0x08 | タイムスタンプ列をレプリケートします。 設定されていない場合、タイムスタンプ列はバイナリとしてレプリケートされます。 | |
0x10 | 対応するクラスター化インデックスを生成します。 | |
0x20 | ユーザー定義データ型 (UDT) をサブスクライバーの基本データ型に変換します。 UDT 列に CHECK 制約または DEFAULT 制約がある場合、UDT 列が主キーの一部である場合、または計算列が UDT 列を参照している場合は、このオプションを使用できません。 Oracle パブリッシャーではサポートされていません。 | |
0x40 | 対応する非クラスター化インデックスを生成します。 | |
0x80 | 宣言された参照整合性を主キーに含めます。 | |
0x100 | 定義されている場合、テーブル アーティクル上のユーザー トリガーをレプリケートします。 | |
0x200 | FOREIGN KEY 制約をレプリケートします。 参照先テーブルがパブリケーションに含まれていない場合、パブリッシュされたテーブルに対するすべての FOREIGN KEY 制約はレプリケートされません。 | |
0x400 | CHECK 制約をレプリケートします。 | |
0x800 | 既定値をレプリケートします。 | |
0x1000 | 列レベルの照合順序をレプリケートします。 | |
0x2000 | パブリッシュされたアーティクル ソース オブジェクトに関連付けられている拡張プロパティをレプリケートします。 | |
0x4000 | テーブル アーティクルで定義されている場合は、一意のキーをレプリケートします。 | |
0x8000 | ALTER TABLE ステートメントを使用して、テーブル アーティクルの主キーと一意キーを制約としてレプリケートします。 注: このオプションは非推奨になりました。 代わりに0x80と0x4000を使用してください。 |
|
0x10000 | 同期中に制約が適用されないように、CHECK 制約を NOT FOR REPLICATION としてレプリケートします。 | |
0x20000 | 同期中に制約が適用されないように、FOREIGN KEY 制約を NOT FOR REPLICATION としてレプリケートします。 | |
0x40000 | パーティション テーブルまたはインデックスに関連付けられているファイル グループをレプリケートします。 | |
0x80000 | パーティション テーブルのパーティション構成をレプリケートします。 | |
0x100000 | パーティション インデックスのパーティション構成をレプリケートします。 | |
0x200000 | テーブル統計をレプリケートします。 | |
0x400000 | 既定のバインドです。 | |
0x800000 | ルールのバインドです。 | |
0x1000000 | フルテキスト インデックスです。 | |
0x2000000 | xml 列に バインドされた XML スキーマ コレクションはレプリケートされません。 | |
0x4000000 | xml 列のインデックスをレプリケートします。 | |
0x8000000 | サブスクライバーにまだ存在しないスキーマを作成します。 | |
0x10000000 | サブスクライバーの xml 列を ntext に変換します。 | |
0x20000000 | SQL Server 2005 (9.x) で導入されたラージ オブジェクトデータ型 (nvarchar(max)、varchar(max)、varbinary(max)) を、SQL Server 2000 (8.x) でサポートされているデータ型に変換します。 | |
0x40000000 | アクセス許可をレプリケートします。 | |
0x80000000 | パブリケーションに含まれていないオブジェクトへの依存関係の削除を試みます。 | |
0x100000000 | varbinary(max) 列で FILESTREAM 属性が指定されている場合は、このオプションを使用して FILESTREAM 属性をレプリケートします。 SQL Server 2005 (9.x) サブスクライバーにテーブルをレプリケートする場合は、このオプションを指定しないでください。 FILESTREAM 列を持つテーブルを SQL Server 2000 (8.x) サブスクライバーにレプリケートすることは、このスキーマ オプションの設定方法に関係なくサポートされていません。 関連するオプション の0x800000000を参照してください。 |
|
0x200000000 | SQL Server 2008 (10.0.x) で導入された日付と時刻のデータ型 (日付、時刻、datetimeoffset、datetime2) を、以前のバージョンの SQL Server でサポートされているデータ型に変換します。 | |
0x400000000 | データとインデックスの圧縮オプションをレプリケートします。 詳細については、「 Data Compression」を参照してください。 | |
0x800000000 | このオプションを設定すると、サブスクライバーの独自のファイル グループに FILESTREAM データを格納できます。 このオプションが設定されていない場合、FILESTREAM データは既定のファイル グループに格納されます。 レプリケーションではファイル グループは作成されません。そのため、このオプションを設定する場合は、サブスクライバーでスナップショットを適用する前に、ファイル グループを作成する必要があります。 スナップショットを適用する前にオブジェクトを作成する方法の詳細については、「スナップショットが適用される前と後にスクリプトを実行する」を参照してください。 関連するオプション の0x100000000を参照してください。 |
|
0x1000000000 | 8000 バイトを超える共通言語ランタイム (CLR) ユーザー定義型 (UDT) を varbinary(max) に 変換し、型 UDT の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるようにします。 | |
0x2000000000 | hierarchyid データ型を varbinary(max) に変換し、hierarchyid 型の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるようにします。 レプリケート テーブルで hierarchyid 列を使用する方法の詳細については、「hierarchyid (Transact-SQL)」を参照してください。 | |
0x4000000000 | フィルター処理されたインデックスをテーブルにレプリケートします。 フィルター選択されたインデックスの詳細については、「フィルター選択されたインデックスの作成」を参照してください。 | |
0x8000000000 | これらの型の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるように、geography データ型と geometry データ型を varbinary(max) に変換します。 | |
0x10000000000 | geography 型と geometry 型の列にインデックスをレプリケートします。 | |
0x20000000000 | 列の SPAR Standard Edition 属性をレプリケートします。 この属性の詳細については、「スパース列の使用」を参照してください。 | |
0x40000000000 | スナップショット エージェントによるスクリプトを有効にして、サブスクライバーにメモリ最適化テーブルを作成します。 | |
0x80000000000 | メモリ最適化アーティクルのクラスター化インデックスを非クラスター化インデックスに変換します。 | |
status | プロパティの新しい状態を指定します。 | |
dts 水平パーティション | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 | |
列名を含める | 列名が、レプリケートされる INSERT ステートメントに含まれます。 | |
列名なし | 列名は、レプリケートされる INSERT ステートメントに含まれません。 | |
dts 水平パーティションなし | アーティクルの行方向のパーティション分割は、変換可能なサブスクリプションによって定義されません。 | |
なし | sysarticles テーブルのすべての状態オプションを クリアし、アーティクル を非アクティブとしてマークします。 | |
parameters | パラメーター化コマンドを使用して、変更がサブスクライバーに反映されます。 これは新しいアーティクルに対する既定値です。 | |
文字列リテラル | 変更は、文字列リテラル値を使用してサブスクライバーに反映されます。 | |
sync_object | 同期出力ファイルの生成に使用されるテーブルまたはビューの名前。 の既定値は NULL です。 Oracle パブリッシャーではサポートされていません。 | |
表 | Oracle データベースからパブリッシュされたアーティクルのログ テーブルによって使用されたテーブルスペースを識別します。 詳細については、「Manage Oracle Tablespaces」 (Oracle テーブルスペースの管理) を参照してください。 | |
threshold | ディストリビューション エージェントがどの時点で新しい ID 範囲を割り当てるかを制御するパーセンテージの値です。 ピア ツー ピア レプリケーションではサポートされません。 | |
type | Oracle パブリッシャーではサポートされていません。 | |
logbased | ログベースの記事。 | |
logbased manualboth | 手動フィルターと手動ビューを含むログ ベースの記事。 このオプションでは、 sync_object プロパティと フィルター プロパティも設定する必要があります。 Oracle パブリッシャーではサポートされていません。 | |
logbased manualfilter | 手動フィルターを使用したログベースの記事。 このオプションでは、 sync_object プロパティと フィルター プロパティも設定する必要があります。 Oracle パブリッシャーではサポートされていません。 | |
logbased manualview | 手動ビューを使用する、ログベースのアーティクルです。 このオプションでは、 sync_object プロパティも設定する必要があります。 Oracle パブリッシャーではサポートされていません。 | |
indexed viewlogbased | ログ ベースのインデックス付きビューに関する記事。 Oracle パブリッシャーではサポートされていません。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 | |
indexed viewlogbased manualboth | 手動フィルターと手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、 sync_object プロパティと フィルター プロパティも設定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 | |
インデックス付き viewlogbased manualfilter | 手動フィルターを使用したログ ベースのインデックス付きビューアーティクル。 このオプションでは、 sync_object プロパティと フィルター プロパティも設定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 | |
インデックス付き viewlogbased manualview | 手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、 sync_object プロパティも設定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 | |
upd_cmd | 実行する UPDATE ステートメント。それ以外の場合は、ログから構築されます。 | |
NULL | NULL | 変更できるアーティクル プロパティの一覧を返します。 |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
このストアド プロシージャによって実行されたアクションによって、既存のスナップショットが無効になる可能性があることを確認します。 force_invalidate_スナップショットは少しで、既定値は 0 です。
0 は、アーティクルを変更してもスナップショットが無効にならないことを指定します。 変更に新しいスナップショットが必要であるとストアド プロシージャで検出された場合、エラーが発生し、変更は行われません。
1 は、アーティクルに対する変更によってスナップショットが無効になる可能性があることを指定し、新しいスナップショットを必要とする既存のサブスクリプションがある場合は、既存のスナップショットが古いとしてマークされ、新しいスナップショットが生成されるアクセス許可を付与します。
新しいスナップショットの生成が必要なプロパティについては、「解説」セクションを参照してください。
[ @force_reinit_subscription = ]force_reinit_subscription_
このストアド プロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 force_reinit_subscriptionは、既定値が 0 のビットです。
0 は、アーティクルに対する変更によってサブスクリプションが再初期化されないように指定します。 変更によって既存のサブスクリプションの再初期化が必要であることがストアド プロシージャによって検出された場合、エラーが発生し、変更は行われません。
1 は、アーティクルに対する変更によって既存のサブスクリプションが再初期化されるように指定し、サブスクリプションの再初期化を実行するためのアクセス許可を付与します。
変更によって既存のサブスクリプションの再初期化が必要になるプロパティについては、「解説」を参照してください。
[ @publisher = ] 'publisher'
SQL Server 以外のパブリッシャーを指定します。 publisher は sysname で、既定値は NULL です。
Note
SQL Server パブリッシャー でアーティクルのプロパティを変更する場合は、パブリッシャーを使用しないでください。
リターン コードの値
0 (成功) または 1 (失敗)
解説
sp_changearticleは、スナップショット レプリケーションとトランザクション レプリケーションで使用されます。
アーティクルがピア ツー ピア トランザクション レプリケーションをサポートするパブリケーションに属している場合は、説明、ins_cmd、upd_cmd、およびdel_cmdプロパティのみを変更できます。
次のいずれかのプロパティを変更するには、新しいスナップショットを生成する必要があり、force_invalidate_スナップショット パラメーターに値 1 を指定する必要があります。
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
次のいずれかのプロパティを変更するには、既存のサブスクリプションを再初期化する必要があり、force_reinit_subscription パラメーターに 値 1 を指定する 必要 があります。
del_cmd
dest_table
destination_owner
フィルター
ins_cmd
status
upd_cmd
既存の文書内では、sp_changearticleを使用して、パブリケーション全体を削除して再作成することなく、アーティクルを変更できます。
Note
schema_optionの値を変更しても、システムはビットごとの更新を実行しません。 つまり、sp_changearticleを使用してschema_optionを設定すると、既存のビット設定がオフになる可能性があります。 既存の設定を保持するには、 |(ビットごとの OR)設定する値とschema_optionの現在の値の間(sp_helparticleを実行して決定できます)。
有効なスキーマ オプション
次の表では、レプリケーションの種類 (上部に表示) とアーティクルの種類 (最初の 列の下に表示) に基づいて、schema_option の許容値について説明します。
記事の種類 | レプリケーションの種類 - トランザクション | レプリケーションの種類 - スナップショット |
---|---|---|
logbased | すべてのオプション | 0x02以外 のすべてのオプション |
logbased manualfilter | すべてのオプション | 0x02以外 のすべてのオプション |
logbased manualview | すべてのオプション | 0x02以外 のすべてのオプション |
インデックス付きビューのログベース | すべてのオプション | 0x02以外 のすべてのオプション |
インデックス付きビューのログベースの手動フィルター | すべてのオプション | 0x02以外 のすべてのオプション |
インデックス付きビューの logbased manualview | すべてのオプション | 0x02以外 のすべてのオプション |
indexed view logbase manualboth | すべてのオプション | 0x02以外 のすべてのオプション |
proc exec | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 |
serializable proc exec | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 |
proc スキーマのみ | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 |
ビュー スキーマのみ | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000、および0x80000000 | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000、および0x80000000 |
func スキーマのみ | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000、および0x80000000 |
インデックス付きビュー スキーマのみ | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000、および0x80000000 | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000、および0x80000000 |
Note
キュー更新パブリケーションの場合、0x80のschema_option値を有効にする必要があります。 SQL Server 以外のパブリケーションでサポートされているschema_option値は、0x01、0x02、0x10、0x40、0x80、0x1000、0x4000です。
例
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
アクセス許可
sp_changearticleを実行できるのは、sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーだけです。
参照
アーティクルのプロパティの表示と変更
パブリケーションおよびアーティクルのプロパティの変更
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示