このトピックでは、SQL Server 2012 以降を実行している ApsaraDB RDS for SQL Server インスタンスで使用できるストアド プロシージャを一覧で紹介します。
使用方法
このトピックのコマンドは SSMS 用で、GO をバッチ コマンド区切り文字として使用します。DMS でストアドプロシージャのコマンドを実行する場合は、GO キーワードを含めないでください。含めると、エラーが発生します。
データベース統計の更新
T-SQL コマンド
sp_rds_update_db_stats
説明
データベース統計を柔軟かつ効率的に更新します。サンプリング率、並列度、タイムアウト、変更のしきい値などのパラメーターを構成できます。
使用方法
-- これは、複数のパラメーターを含む包括的な例です。
-- test_db データベースのデータベース統計を更新します。サンプリング率を 50%、並列度を 4、タイムアウトを 7,200 秒、変更のしきい値を 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 |
いいえ |
統計情報の更新のタイムアウトを秒 (s) 単位で指定します。デフォルト値は
|
|
@modification_threshold |
いいえ |
統計を更新するための変更しきい値をパーセンテージで指定します。データ型は
|
インスタンス内のデータベースのコピー
T-SQL コマンド
sp_rds_copy_database
対応エディション
Basic Edition および High-availability Edition
説明
同一インスタンス内にデータベースのコピーを作成します。
-
インスタンスで利用可能なストレージは、ソースデータベースのサイズの 1.3 倍以上が必要です。
-
この操作は ApsaraDB MyBase for SQL Server インスタンスでは使用できません。
使用方法
USE db
GO
EXEC sp_rds_copy_database 'db','db_copy'
GO
-
1 つ目のパラメーターはソースデータベースの名前です。
-
2 つ目のパラメーターは宛先データベースの名前です。
データベースのオンライン化
T-SQL コマンド
sp_rds_set_db_online
対応エディション
RDS Basic Edition および RDS High-availability Edition
説明
データベースを OFFLINE に設定した後は、ALTER DATABASE ステートメントを使用してオンラインに戻すことはできません。代わりに、このストアドプロシージャを使用してください。
使用方法
USE master
GO
EXEC sp_rds_set_db_online 'db'
GO
オンラインにするデータベースの名前を指定します。
グローバルデータベース権限
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 master
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
-
1 つ目のパラメーターはデータベース名です。
-
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 = '<スキーマ名>',
@source_name = '<テーブル名>',
@role_name = '<CDCロール名>'
変更データキャプチャの無効化
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 = '<スキーマ名>',
@source_name = '<テーブル名>',
@capture_instance = '<キャプチャインスタンス名>'
-- 特定のテーブルのキャプチャインスタンス名を取得します。
SELECT capture_instance
FROM cdc.change_tables
WHERE source_schema = '<スキーマ名>'
AND source_name = '<テーブル名>'
RDS インスタンスのパラメータ
T-SQL コマンド
sp_rds_configure
対応インスタンスファミリー
ベーシック版および高可用性版
説明
以下のインスタンスパラメータを設定します。プライマリインスタンスとスタンバイインスタンスの場合、設定が自動的に同期されます。詳細については、Microsoft ドキュメントをご参照ください。
|
パラメーター |
説明 |
例 |
|
fill factor (%) |
インデックス ページのフィル ファクターを指定します。 |
|
|
max worker threads |
クエリを並列実行し、リクエストを処理するためのワーカー スレッドの最大数を指定します。 |
|
|
cost threshold for parallelism |
並列処理のためのコストしきい値を指定します。 |
|
|
max degree of parallelism |
クエリの最大並列度を指定します。 |
|
|
min server memory (MB) |
RDS インスタンスが使用する最小メモリ量をメガバイト (MB) 単位で指定します。 |
|
|
max server memory (MB) |
RDS インスタンスが使用する最大メモリ量をメガバイト (MB) 単位で指定します。 |
|
|
blocked process threshold (s) |
ブロックされたプロセスを報告するためのしきい値を秒単位で指定します。 |
|
|
nested triggers |
入れ子になったトリガーを有効または無効にします。有効な値:
|
|
|
Ad Hoc Distributed Queries |
アドホック分散クエリを有効または無効にします。有効な値:
|
|
|
clr enabled |
ユーザーが作成した共通言語ランタイム (CLR) アセンブリの実行を有効または無効にします。有効な値:
|
|
|
default full-text language |
全文検索の既定の言語を指定します。一般的な値は次のとおりです:
|
|
|
default language |
インスタンスの既定の言語を指定します。一般的な値は次のとおりです:
|
|
|
max text repl size (B) |
レプリケーション プロセスでのテキストデータの最大サイズをバイト単位で指定します。 |
テキストのレプリケーション最大サイズを 100 MB に設定するには:
|
|
optimize for ad hoc workloads |
アドホック ワークロードのプラン キャッシュの最適化を有効にするかどうかを指定します。有効な値:
|
|
|
query governor cost limit |
クエリの推定コストの上限を指定します。値 0 はクエリ ガバナーを無効にします。 |
|
|
recovery interval (min) |
データベースの復旧にかかる最大時間を分単位で指定します。 |
|
|
remote login timeout (s) |
リモート ログインのタイムアウト期間を秒単位で指定します。 |
|
|
remote query timeout (s) |
リモート クエリのタイムアウト期間を秒単位で指定します。 |
|
|
query wait (s) |
タイムアウトする前にクエリがメモリ リソースを待機する時間を秒単位で指定します。 |
|
|
min memory per query (KB) |
クエリの実行に割り当てられる最小メモリ量をキロバイト (KB) 単位で指定します。 |
|
|
in-doubt xact resolution |
システムが未確定の分散トランザクションをどのように解決するかを指定します。有効な値:
|
|
使用法
EXEC sp_rds_configure '<パラメーター>',<値>
-
最初のパラメータは、設定対象のインスタンスパラメータです。
-
2 番目のパラメータは、そのパラメータに設定する値です。
リンク サーバーの追加
T-SQL コマンド
sp_rds_add_linked_server
対応インスタンス
-
インスタンスエディション:Cluster Edition および High-availability Edition。 Basic Edition はサポートされていません。
-
インスタンスタイプ:汎用および専用。 共有インスタンスはサポートされていません。
-
課金方法:サブスクリプションおよび従量課金。 サーバーレスインスタンス はサポートされていません。
説明
このコマンドはインスタンスにリンク サーバーを追加し、分散トランザクションをサポートします。 プライマリインスタンスで作成されたリンク サーバーは、セカンダリインスタンスに自動的に同期されます。 プライマリ/セカンダリ スイッチオーバー後にリンク サーバーを再設定する必要はありません。 ただし、プライマリインスタンス上の既存のリンク サーバーへの変更は、セカンダリインスタンスには同期されません。 詳細については、「自動または手動のプライマリ/セカンダリ スイッチオーバー」をご参照ください。
使用方法
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'******', -- 宛先のユーザーのパスワード。
@source_user_name sysname = N'test', -- ソースインスタンスのユーザー名。
@source_password nvarchar(128) = N'******', -- ソースのユーザーのパスワード。
-- 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
説明
このストアド プロシージャは、RDS インスタンスのトレース フラグを設定します。 現在サポートされているのは、一部のトレース フラグのみです。 プライマリ/セカンダリ インスタンスの場合、この設定はプラットフォームが自動的に同期します。
使用方法
EXEC sp_rds_dbcc_trace '1222',1/0-
1つ目のパラメーターはトレース フラグです。
-
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
-
1 番目のパラメーターは、元のデータベース名です。
-
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'
-
ログイン名を指定します。
-
ロール名を指定します。有効な値は setupadmin と processadmin です。
よくある質問
Q:標準アカウントで EXEC sp_rds_drop_database 'dbtest'; コマンドを実行すると、Cannot use KILL to kill your own process. エラーが発生するのはなぜですか。
A:ターゲットデータベース以外のデータベースに接続したコマンドウィンドウから、特権アカウントを使用してコマンドを実行してください。また、アカウントがターゲットデータベースに対して必要な権限を持っていることを確認してください。詳細については、「アカウント権限の変更」をご参照ください。