このトピックでは、ApsaraDB RDS for SQL Server 2012 以降のバージョンでサポートされているストアドプロシージャについて説明します。
使用上の注意
このトピックのコマンドは、SQL Server Management Studio (SSMS) での実行を目的としています。これらのコマンドには、バッチ区切り文字として GO が含まれています。Data Management Service (DMS) でストアドプロシージャコマンドを実行する場合は、GO キーワードを含めないでください。含めると、エラーが発生します。
データベース統計の更新
T-SQL コマンド
sp_rds_update_db_stats
説明
柔軟かつ効率的な方法でデータベースの統計情報を更新します。サンプルレート、並列処理の次数、タイムアウト期間、しきい値のパーセンテージなど、複数のディメンションを設定できます。
使用方法
-- 次の例は、複数のパラメーターを使用する方法を示しています。
-- test_db データベースの統計情報を更新します。サンプルレートを 50%、並列処理の次数を 4、タイムアウト期間を 7200 秒、変更のしきい値を 3 に設定します。
EXEC sp_rds_update_db_stats
@db_name = 'test_db', -- データベース名 (必須)
@sample_percent = 50, -- サンプルレート (オプション)
@max_dop = 4, -- 並列処理の次数 (オプション、SQL Server 2012 以前ではサポートされていません)
@timeout_seconds = 7200, -- タイムアウト期間 (秒) (オプション)
@modification_threshold = 3; -- 変更のしきい値 (オプション)@db_name パラメーターのみを渡した場合、または SQL Server データベースのバージョンが 2008 の場合、システムはデフォルトで sp_updatestats を実行します。詳細については、Microsoft の公式ドキュメントをご参照ください。
パラメータ | 必須 | 説明 |
@db_name | はい | 統計情報を更新するターゲットデータベースの名前。次の例は、このパラメーターの使用方法を示しています: |
@sample_percent | いいえ | 統計情報のサンプリング率。データの型は このパラメーターを指定しない場合、システムのデフォルトのサンプルレートが使用されます。詳細については、Microsoft の公式ドキュメントをご参照ください。次の例は、このパラメーターの使用方法を示しています: |
@max_dop | いいえ | 並列処理の次数 (DOP)。データの型は |
@timeout_seconds | いいえ | 統計情報更新操作のタイムアウト期間 (秒)。デフォルト値は |
@modification_threshold | いいえ | 統計情報を更新するための変更しきい値のパーセンテージ。データの型は
|
インスタンス内でのデータベースのコピー
T-SQL コマンド
sp_rds_copy_database
サポートされているインスタンスエディション
Basic Edition、High-availability Edition
説明
インスタンス内でデータベースをコピーします。
インスタンスの利用可能なストレージ容量は、現在のデータベースのサイズの 1.3 倍以上である必要があります。
このプロシージャは、SQL Server 用の MyBase 専用クラスターではサポートされていません。
使用方法
USE db
GO
EXEC sp_rds_copy_database 'db','db_copy'
GO最初のパラメーターは、コピーするデータベースを指定します。
2 番目のパラメーターは、ターゲットデータベースを指定します。
データベースのオンライン設定
T-SQL コマンド
sp_rds_set_db_online
サポートされているインスタンスエディション
Basic Edition、High-availability Edition
説明
データベースを OFFLINE に設定した後、ALTER DATABASE を使用して ONLINE に戻すことはできません。このストアドプロシージャを使用して、データベースを ONLINE に設定できます。
使用方法
USE master
GO
EXEC sp_rds_set_db_online 'db'
GOパラメーターは、ONLINE に設定するデータベースを指定します。
グローバルデータベース権限の付与
T-SQL コマンド
sp_rds_set_all_db_privileges
サポートされているインスタンスエディション
Basic Edition、High-availability Edition
説明
ユーザーに、すべてまたは複数のユーザーデータベースに対する権限を付与します。
権限を付与する場合、データベースに対する現在のユーザーの権限は、付与する権限以上である必要があります。
使用方法
sp_rds_set_all_db_privileges 'user','db_owner','db1,db2...'最初のパラメーターは、権限を付与するユーザーを指定します。
2 番目のパラメーターは、ユーザーに付与するデータベースロールを指定します。
3 番目のパラメーターは、データベースを指定します。カンマで区切って 1 つ以上のデータベースを指定できます。このパラメーターはオプションです。このパラメーターを指定しない場合、すべてのユーザーデータベースに対する権限が付与されます。
データベースを削除する
T-SQL コマンド
sp_rds_drop_database
サポートされているインスタンスエディション
High-availability Edition
Basic Edition インスタンスはこのストアドプロシージャをサポートしていません。代わりに
DROP DATABASE dbを使用できます。ターゲットデータベースに接続されていないコマンドウィンドウで、特権アカウントを使用してこのコマンドを実行できます。アカウントがターゲットデータベースで必要な権限を持っていることを確認してください。詳細については、「アカウントの権限を変更する」をご参照ください。
説明
インスタンスからデータベースを削除します。データベースが削除されると、関連するオブジェクトも削除されます。High-availability Edition インスタンスの場合、データベースイメージは自動的に削除され、データベースへの接続は終了します。
使用方法
USE db
GO
EXEC sp_rds_drop_database 'db'
GOパラメーターは、削除するデータベースを指定します。
変更追跡の設定
T-SQL コマンド
sp_rds_change_tracking
サポートされているインスタンスエディション
High-availability Edition
説明
データベースの変更追跡フラグを設定します。
使用方法
USE db
GO
EXEC sp_rds_change_tracking 'db',1
GO最初のパラメーターはデータベース名を指定します。
2 番目のパラメーターは、この機能を有効にするかどうかを指定します。
1: 有効化。
0: 無効化。
データベースの変更データキャプチャの有効化
T-SQL コマンド
sp_rds_cdc_enable_db
サポートされているインスタンスエディション
High-availability Edition、Cluster Edition
説明
データベースの変更データキャプチャ (CDC) を有効にします。
使用方法
USE db
GO
-- データベースレベルで CDC を有効にします。
EXEC sp_rds_cdc_enable_db
GO
-- 特定のテーブルに対して CDC を有効にします。
EXEC sys.sp_cdc_enable_table
@source_schema = '<schema_name>',
@source_name = '<table_name>',
@role_name = '<CDC_role_name>'データベースの変更データキャプチャの無効化
T-SQL コマンド
sp_rds_cdc_disable_db
サポートされているインスタンスエディション
High-availability Edition、Cluster Edition
説明
データベースの CDC を無効にします。
使用方法
USE db
GO
-- データベースレベルで CDC を無効にします。
EXEC sp_rds_cdc_disable_db
GO
-- 特定のテーブルに対して CDC を無効にします。
EXEC sys.sp_cdc_disable_table
@source_schema = '<schema_name>',
@source_name = '<table_name>',
@capture_instance = '<CDC_capture_instance_name>'
-- 特定のテーブルの CDC キャプチャインスタンス名を取得するメソッド。
SELECT capture_instance
FROM cdc.change_tables
WHERE source_schema = '<schema_name>'
AND source_name = '<table_name>'インスタンスパラメーターの設定
T-SQL コマンド
sp_rds_configure
サポートされているインスタンスエディション
Basic Edition、High-availability Edition
説明
インスタンスパラメーターを設定します。インスタンスにプライマリノードとセカンダリノードがある場合、パラメーターは自動的に同期されます。次のパラメーターがサポートされています。これらのパラメーターの使用方法の詳細については、Microsoft の公式ドキュメントをご参照ください。
パラメータ | 説明 | 例 |
fill factor (%) | インデックスページの充填率を指定します。 |
|
max worker threads | パラレルクエリの実行とリクエスト処理のためのワーカースレッドの最大数を指定します。 |
|
cost threshold for parallelism | 並列処理のコストしきい値を指定します。 |
|
max degree of parallelism | クエリの並列処理の最大次数を指定します。 |
|
min server memory (MB) | SQL Server インスタンスが使用する最小メモリ量を指定します。 |
|
max server memory (MB) | SQL Server インスタンスが使用する最大メモリ量を指定します。 |
|
blocked process threshold (s) | ブロックされたプロセスのしきい値を指定します。 |
|
nested triggers | 入れ子になったトリガーを有効にするかどうかを指定します。有効値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
Ad Hoc Distributed Queries | アドホック分散クエリを有効にするかどうかを指定します。有効値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
clr enabled | 共通言語ランタイム (CLR) を有効にするかどうかを指定します。有効値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
default full-text language | デフォルトのフルテキスト検索言語を指定します。一般的な値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
default language | デフォルト言語を指定します。一般的な値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
max text repl size (B) | レプリケーションプロセスにおけるテキストの最大サイズを指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 | 最大テキストレプリケーションサイズを 100 MB に設定します:
|
optimize for ad hoc workloads | アドホックワークロードに最適化された動的管理ビューを有効にするかどうかを指定します。有効な値:
説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
query governor cost limit | クエリの最大実行時間を秒単位で指定します。値 0 は時間制限がないことを示します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
recovery interval (min) | 回復間隔を指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
remote login timeout (s) | リモートログインのタイムアウト期間を指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
remote query timeout (s) | リモートクエリのタイムアウト期間を指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
query wait (s) | クエリがリソースを待機する時間を指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
min memory per query (KB) | 各クエリに割り当てられる最小メモリ量を指定します。 説明 このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。 |
|
in-doubt xact resolution | システムが未確定の分散トランザクションをどのように処理するかを指定します。有効な値:
|
|
使用方法
EXEC sp_rds_configure '<parameter>',<value>最初のパラメーターは、設定するインスタンス構成パラメーターを指定します。
2 番目のパラメーターは、インスタンスパラメーターの値を指定します。
リンクサーバーの追加
T-SQL コマンド
sp_rds_add_linked_server
サポートされているインスタンス
インスタンスエディション: Cluster Edition および High-availability Edition。Basic Edition はサポートされていません。
インスタンスタイプ: 汎用および専用。共有インスタンスタイプはサポートされていません。
課金方法: サブスクリプションおよび従量課金。サーバーレスインスタンスはサポートされていません。
説明
インスタンスにリンクサーバーを追加します。分散トランザクションがサポートされています。リンクサーバーは、インスタンスのプライマリノードとセカンダリノードに自動的に作成されます。高可用性 (HA) スイッチオーバー後に再設定する必要はありません。詳細については、「自動または手動のプライマリ/セカンダリフェールオーバー」をご参照ください。
使用方法
DECLARE
@linked_server_name sysname = N'yangzhao_slb', -- リンクサーバーの名前。
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', -- ターゲット SQL Server の IP アドレスとポート番号を IP,Port 形式で指定します。
@user_name sysname = N'ay15' , -- ターゲット SQL Server のログインユーザー名。
@password nvarchar(128) = N'******', -- ターゲット SQL Server のログインユーザー名のパスワード。
@source_user_name sysname = N'test', -- 現在の SQL Server インスタンスでリンクサーバーを作成するために使用されるログインユーザー名。
@source_password nvarchar(128) = N'******', -- 現在の SQL Server インスタンスでリンクサーバーを作成するために使用されるログインユーザー名のパスワード。
-- リンクサーバーの設定。XML 形式で渡されます。この例では、データアクセス、RPC、および 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トレースフラグの設定
T-SQL コマンド
sp_rds_dbcc_trace
サポートされているインスタンスエディション
Basic Edition、High-availability Edition
説明
インスタンスのトレースフラグを設定します。特定のトレースフラグのみがサポートされています。インスタンスにプライマリノードとセカンダリノードがある場合、トレースフラグは自動的に同期されます。
使用方法
EXEC sp_rds_dbcc_trace '1222',1/0最初のパラメーターはトレースフラグを指定します。
2 番目のパラメーターは、フラグをオンにするかオフにするかを指定します。
1: オン。
0: オフ。
データベース名の変更
T-SQL コマンド
sp_rds_modify_db_name
サポートされているインスタンスエディション
Basic Edition、High-availability Edition、Cluster Edition
説明
データベースの名前を変更します。データベースへの接続に使用するアカウントがターゲットデータベースで必要な権限を持っていること、およびターゲットデータベースがオンラインであることを確認してください。
High-availability Edition および Cluster Edition インスタンスの場合、名前の変更後にプライマリ/セカンダリ関係が自動的に再構築されます。このプロセス中に、バックアップと復元が実行されます。データベースが大きい場合は、インスタンスの利用可能なストレージ容量を確認してください。容量が不足している場合は、インスタンスをスケールアウトできます。
使用方法
USE master
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO最初のパラメーターは元のデータベース名を指定します。
2 番目のパラメーターは新しいデータベース名を指定します。
サーバーレベルのロールの付与
T-SQL コマンド
sp_rds_set_server_role
サポートされているインスタンスエディション
Basic Edition
説明
ログインユーザーにサーバーレベルのロールを付与します。サポートされているロールは setupadmin と processadmin です。他の権限を作成したり、アカウント権限の詳細については、「SA 権限を持つアカウントの作成」および「アカウント権限リスト」をご参照ください。
使用方法
EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'最初のパラメーターはユーザー名を指定します。
2 番目のパラメーターはロール名を指定します。サポートされているロールは setupadmin と processadmin です。
tempdb データベースの db_owner 権限の管理
T-SQL コマンド
sp_rds_manage_tempdb_user
サポートされているインスタンスエディション
Basic Edition、High-availability Edition、Cluster Edition
説明
指定されたアカウントに対して、tempdb データベースの db_owner 権限を付与または取り消します。
tempdbは一時的なシステムデータベースであるため、インスタンスが再起動するたびにtempdbは自動的に再構築および初期化されます。その結果、付与された権限は失われ、デフォルトの状態に戻ります。したがって、再起動のたびに権限を再度付与する必要があります。RDS High-availability Edition や RDS Cluster Edition などのプライマリ/セカンダリ アーキテクチャを使用するインスタンスの場合、プライマリノードとセカンダリノードに個別に権限を付与する必要があります。関連する操作については、「tempdb の一時領域を再利用する」をご参照ください。
使用方法
EXEC sp_rds_manage_tempdb_user
@login_name = '<login_name>',
@action = '<action>';最初のパラメーターはユーザー名を指定します。
2 番目のパラメーターは操作の種類を指定します。サポートされている値は
create(権限の付与) とdrop(権限の取り消し) です。
よくある質問
Q: 標準権限のアカウントを使用して EXEC sp_rds_drop_database 'dbtest'; コマンドを実行した後、「Cannot use KILL to kill your own process.」というエラーが表示されるのはなぜですか?
A: ターゲットデータベースに接続されていないコマンドウィンドウで、特権アカウントを使用してこのコマンドを実行できます。アカウントがターゲットデータベースで必要な権限を持っていることを確認してください。詳細については、「アカウントの権限を変更する」をご参照ください。