このトピックでは、SQL Server 2012以降を実行するApsaraDB RDSインスタンスでサポートされるストアドプロシージャについて説明します。
RDSインスタンスのデータベース間でデータを複製する
T-SQLコマンド
sp_rds_copy_database
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、ソースデータベースのデータを指定されたターゲットデータベースにレプリケートするために使用されます。 ソースデータベースとターゲットデータベースは、同じRDSインスタンスに作成されます。
RDSインスタンスの使用可能なストレージは、ソースデータベースのサイズの1.3倍以上である必要があります。
ApsaraDB MyBase for SQL Serverクラスターはサポートされていません。
使用法
USE master
GO
EXEC sp_rds_copy_database 'db','db_copy'
GO
最初のパラメーターは、ソースデータベースの名前を指定します。
2番目のパラメーターは、ターゲットデータベースの名前を指定します。
データベースをオンラインモードに設定する
T-SQLコマンド
sp_rds_set_db_online
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
データベースをオフラインモードに設定した後、ALTER databaseステートメントを実行してデータベースをオンラインモードに設定することはできません。 この場合、このストアドプロシージャを使用して、データベースをオンラインモードに設定できます。
使用法
USE master
GO
EXEC sp_rds_set_db_online 'db'
GO
このパラメーターには、オンラインモードに設定するデータベースの名前を指定します。
RDSインスタンスの一部またはすべてのデータベースに対する権限をユーザーに付与する
T-SQLコマンド
sp_rds_set_all_db_privileges
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、RDSインスタンスの一部またはすべてのデータベースに対する権限をユーザーに付与するために使用されます。
指定されたデータベースに対するユーザーの権限は、ユーザーに付与する権限以上である必要があります。
使用法
sp_rds_set_all_db_privileges 'user','db_owner','db1,db2...'
最初のパラメーターには、権限を付与するユーザーの名前を指定します。
2番目のパラメーターは、ユーザーに付与するデータベースロールを指定します。
3番目のパラメーターは、ユーザーに権限を付与するデータベースの名前を指定します。 1つ以上のデータベース名を入力できます。 複数のデータベース名を入力する場合は、データベース名をコンマ (,) で区切る必要があります。 このパラメーターを設定しない場合、すべてのデータベースの権限が付与されます。
インスタンスからデータベースを削除する
T-SQLコマンド
sp_rds_drop_database
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionは、このストアドプロシージャをサポートしていません。 RDS Basic Editionを実行しているRDSインスタンスからデータベースを削除する場合は、
DROP database db
ステートメントを実行します。必須データベース以外のデータベースのCLIで特権アカウントを使用してステートメントを実行する必要があります。 特権アカウントに、必要なデータベースに対する操作を実行する権限があることを確認します。 特権アカウントの詳細については、「ApsaraDB RDS For SQL Serverインスタンスのアカウント権限」をご参照ください。 詳細については、「アカウントの権限の変更」をご参照ください。
説明
このストアドプロシージャは、RDSインスタンスからデータベースを削除するために使用されます。 削除プロセス中に、システムはデータベースに関連付けられているすべてのオブジェクトを削除します。 RDSインスタンスがRDS High-availability Editionを実行している場合、システムは関連するイメージも削除し、データベースへの接続を閉じます。
使用法
USE db
GO
EXEC sp_rds_drop_database 'db'
GO
このパラメーターには、削除するデータベースの名前を指定します。
データベースの変更追跡の構成
T-SQLコマンド
sp_rds_change_tracking
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、データベースの変更追跡を構成するために使用されます。
使用法
USE db
GO
EXEC sp_rds_change_tracking 'db',1
GO
最初のパラメーターには、変更の追跡を構成するデータベースの名前を指定します。
2番目のパラメーターは、変更追跡を有効にするかどうかを指定します。 有効な値:
1: 変更の追跡を有効にします。
0: 変更の追跡を無効にします。
変更データキャプチャの有効化
T-SQLコマンド
sp_rds_cdc_enable_db
サポートされているRDSインスタンス
RDS High-availability EditionおよびRDS Cluster Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、データベースの変更データキャプチャ (CDC) を有効にするために使用されます。
使用法
USE db
GO
-- Enable CDC for a database.
EXEC sp_rds_cdc_enable_db
GO
-- Enable CDC for a table.
EXEC sys.sp_cdc_enable_table
@source_schema = '<Schema name>',
@source_name = '<Table name>',
@role_name = '<Role name of CDC>'
CDCを無効にする
T-SQLコマンド
sp_rds_cdc_disable_db
サポートされているRDSインスタンス
RDS High-availability EditionおよびRDS Cluster Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、データベースのCDCを無効にするために使用されます。
使用法
USE db
GO
-- Disable CDC for a database.
EXEC sp_rds_cdc_disable_db
GO
-- Disable CDC for a table.
EXEC sys.sp_cdc_disable_table
@source_schema = '<Schema name>',
@source_name = '<Table name>',
@capture_instance = '<Name of the instance on which CDC is enabled>'
-- Obtain the name of the instance on which CDC is enabled for a table.
SELECT capture_instance
FROM cdc.change_tables
WHERE source_schema = '<Schema name>'
AND source_name = '<Table name>'
RDSインスタンスのパラメーターの設定
T-SQLコマンド
sp_rds_configure
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、RDSインスタンスのパラメーターを設定するために使用されます。 RDSインスタンスにセカンダリRDSインスタンスがスタンバイとして提供されている場合、システムは新しいパラメーター設定をセカンダリRDSインスタンスに同期します。 次の表に、サポートされるパラメーターを示します。 詳細については、「Microsoftドキュメント」をご参照ください。
パラメーター | 説明 | 例 |
充填率 (%) | インデックスページの塗りつぶし係数の割合。 |
|
最大ワーカースレッド | クエリを実行し、要求を並列に処理するワーカースレッドの最大数。 |
|
並列処理のコストしきい値 | 並列実行のオーバーヘッドしきい値。 |
|
最大並列度 | クエリの最大並列処理度。 |
|
最小サーバーメモリ (MB) | RDSインスタンスの最小メモリ量。 |
|
最大サーバーメモリ (MB) | RDSインスタンスの最大メモリ量。 |
|
ブロックされたプロセスしきい値 | ブロックされたプロセスのしきい値。 |
|
ネストされたトリガー | ネストされたトリガーを有効にするかどうかを指定します。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
アドホック分散クエリ | アドホック分散クエリを有効にするかどうかを指定します。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
clrが有効 | 共通言語ランタイム (CLR) を有効にするかどうかを指定します。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
デフォルトのフルテキスト言语 | デフォルトのフルテキスト検索言語。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
デフォルト言語 | デフォルトの言語。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
最大テキストreplサイズ (B) | レプリケーション中のテキストの最大サイズ。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 | 次のステートメントを実行して、最大サイズを100 MBに設定できます。
|
アドホックワークロードの最適化 | アドホックワークロード用に最適化された動的管理ビューを有効にするかどうかを指定します。 有効な値:
説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
クエリガバナーのコスト制限 | クエリの最大実行時間。 単位は秒です。 値0は、制限が課されないことを示す。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
回復間隔 (分) | 回復間隔。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
リモートログインタイムアウト (s) | リモートログインのタイムアウト期間。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
リモートクエリのタイムアウト (s) | リモートクエリのタイムアウト期間。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
クエリ待機 (s) | クエリがタイムアウトする前にリソースを待機する期間。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
クエリごとの最小メモリ (KB) | 各クエリで消費される最小メモリ量。 説明 このパラメーターは、5月2023日より前に作成されたRDSインスタンスではサポートされません。 |
|
疑いのあるxactの解像度 | システムが不確実な分散トランザクションを処理する方法。 有効な値:
|
|
使用法
EXEC sp_rds_configure '<Parameter>',<Parameter value>
最初のパラメーターは、設定するパラメーターの名前を指定します。
2番目のパラメーターは、パラメーターの値を指定します。
RDSインスタンスへのリンクサーバーの追加
T-SQLコマンド
sp_rds_add_linked_server
サポートされているRDSインスタンス
汎用インスタンスファミリーまたは専用インスタンスファミリーに属するRDSインスタンス。 共有インスタンスファミリーはサポートされていません。 インスタンスファミリーの詳細については、「インスタンスファミリー」をご参照ください。
サブスクリプションおよび従量課金RDSインスタンス。 サーバーレスRDSインスタンスはサポートされていません。 詳細については、「概要」をご参照ください。
説明
このストアドプロシージャは、RDSインスタンスにリンクサーバーを追加するために使用されます。 このストアドプロシージャは、分散トランザクションをサポートします。 RDSインスタンスにリンクサーバーを追加すると、リンクサーバーの設定が関連付けられたセカンダリRDSインスタンスにレプリケートされます。 この方法では、プライマリ /セカンダリの切り替え後にリンクサーバーを追加する必要はありません。
使用法
DECLARE
@linked_server_name sysname = N'yangzhao_slb', --The name of the linked server.
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', --The IP address and port of the destination RDS instance. Format: IP address,Port.
@user_name sysname = N'ay15' , --The logon username of the destination RDS instance.
@password nvarchar(128) = N'******', --The logon password of the destination RDS instance.
@source_user_name sysname = N'test', --The logon username for creating a linked server on the current RDS instance.
@source_password nvarchar(128) = N'******', --The logon password for creating a linked server on the current RDS instance.
--The configuration items that are required to connect the RDS instance to the server. The configuration items are specified in the XML format. In this example, the configuration items include data access, rpc, and rpc out.
@link_server_options xml
= N'
<rds_linked_server>
<config option="data access">true</config>
<config option="rpc">true</config>
<config option="rpc out">true</config>
</rds_linked_server>
'
EXEC sp_rds_add_linked_server
@linked_server_name,
@data_source,
@user_name,
@password,
@source_user_name,
@source_password,
@link_server_options
RDSインスタンスのトレースフラグの設定
T-SQLコマンド
sp_rds_dbcc_trace
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、RDSインスタンスのトレースフラグを設定するために使用されます。 このストアドプロシージャは、一部のトレースフラグのみをサポートします。 RDSインスタンスに設定したトレースフラグは、関連付けられたセカンダリRDSインスタンスに自動的にレプリケートされます。
使用法
EXEC sp_rds_dbcc_trace '1222',1/0
最初のパラメーターには、RDSインスタンスに設定するトレースフラグを指定します。
2番目のパラメーターは、トレースフラグを有効にするかどうかを指定します。 有効な値:
1: トレースフラグを有効にします。
0: トレースフラグを無効にします。
データベース名の変更
T-SQLコマンド
sp_rds_modify_db_name
サポートされているRDSインスタンス
RDS High-availability Editionを実行するRDSインスタンス
RDS Cluster Editionを実行するRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、データベースの名前を変更するために使用されます。 RDS High-availability EditionまたはRDS Cluster Editionを実行するRDSインスタンス上のデータベースの名前を変更すると、システムはRDSインスタンスとそのセカンダリインスタンス間のレプリケーション設定を自動的に再構築します。 再構築プロセス中に、RDSインスタンスのデータがバックアップおよび復元されます。 データベースが大量のストレージを占有する場合は、RDSインスタンスの使用可能なストレージが十分であることを確認してください。
使用法
USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
最初のパラメーターは、データベースの元の名前を指定します。
2番目のパラメーターは、データベースの新しい名前を指定します。
サーバーロールの割り当てAssign server roles
T-SQLコマンド
sp_rds_set_server_role
サポートされているRDSインスタンス
RDS Basic Editionを実行するRDSインスタンス
説明
このストアドプロシージャは、ログオンユーザーにサーバーの役割を割り当てるために使用されます。 ロールには、setupadminとprocessadminが含まれます。 アカウント権限とアカウントの作成方法の詳細については、「ApsaraDB RDS For SQL Serverインスタンスのシステム管理者アカウントの作成」および「ApsaraDB RDS for SQL Serverインスタンスのアカウント権限」をご参照ください。
使用法
EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
最初のパラメーターは、アカウント名を指定します。
2番目のパラメーターは、ロール名を指定します。 使用可能なロールはsetupadminとprocessadminです。
よくある質問
なぜですかKILLを使用して独自のプロセスを終了できません。
標準アカウントを使用してEXEC sp_rds_drop_database 'dbtest';
ステートメントを実行すると、エラーが報告されましたか?
特権アカウントを使用して、必要なデータベース以外のデータベースのCLIでステートメントを実行する必要があります。 特権アカウントに、必要なデータベースに対する操作を実行する権限があることを確認します。 特権アカウントの詳細については、「ApsaraDB RDS For SQL Serverインスタンスのアカウント権限」をご参照ください。 詳細については、「アカウントの権限の変更」をご参照ください。