すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ストアドプロシージャ

最終更新日:May 15, 2026

このトピックでは、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

はい

統計を更新するデータベースを指定します。例:

-- データベース名のみを指定します。更新は、Microsoft の sp_updatestats のロジックに従って行われます。
EXEC sp_rds_update_db_stats @db_name = 'test_db';

@sample_percent

いいえ

統計情報用にサンプリングするテーブルのパーセンテージを指定します。データ型は float で、値は [0, 100] の範囲内である必要があります。

省略した場合、システムはデフォルトのサンプリング率を使用します。詳細については、「Microsoft 公式ドキュメント」をご参照ください。例:

-- サンプリング率を 30% に設定します。
EXEC sp_rds_update_db_stats 
    @db_name = 'test_db',
    @sample_percent = 30;

@max_dop

いいえ

並列度 (DOP) を指定します。データ型は int です。デフォルト値は 0 です。この値は、システムがデフォルト設定を使用することを示します。最大値は RDS インスタンスのコア数 を超えることはできません。このパラメーターは SQL Server 2012 以前のバージョンではサポートされていません。 例:

-- 最大並列度を 4 に設定します。
EXEC sp_rds_update_db_stats 
    @db_name = 'test_db',
    @max_dop = 4;

@timeout_seconds

いいえ

統計情報の更新のタイムアウトを秒 (s) 単位で指定します。デフォルト値は 3600 秒 (1 時間) です。例:

-- タイムアウトを 7,200 秒 (2 時間) に設定します。
EXEC sp_rds_update_db_stats 
    @db_name = 'test_db',
    @timeout_seconds = 7200;

@modification_threshold

いいえ

統計を更新するための変更しきい値をパーセンテージで指定します。データ型は int で、デフォルト値は 0 です。

  • デフォルトポリシー (値が 0 の場合): Alibaba Cloud の推奨ベストプラクティスが適用されます。

    • テーブルの行数 < 500:30%

    • 500 ≤ テーブルの行数 ≤ 1,000,000:20%

    • テーブルの行数 > 1,000,000:5%

  • 手動入力: しきい値を指定します。値は [0, 100] の範囲内である必要があります。変更率は (number of modified rows * 100) / total number of rows の式で計算されます。統計情報の更新をトリガーするには、計算された変更率が設定したしきい値以上である必要があります。

    -- 10,000 行のテーブルで、100 行が変更されたときに統計更新をトリガーするには、しきい値を 1 に設定します。
    EXEC sp_rds_update_db_stats 
        @db_name = 'test_db',
        @modification_threshold = 1;

インスタンス内のデータベースのコピー

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 (%)

インデックス ページのフィル ファクターを指定します。

EXEC sp_rds_configure 'fill factor (%)', 90;

max worker threads

クエリを並列実行し、リクエストを処理するためのワーカー スレッドの最大数を指定します。

EXEC sp_rds_configure 'max worker threads', 100;

cost threshold for parallelism

並列処理のためのコストしきい値を指定します。

EXEC sp_rds_configure 'cost threshold for parallelism', 30;

max degree of parallelism

クエリの最大並列度を指定します。

EXEC sp_rds_configure 'max degree of parallelism', 4;

min server memory (MB)

RDS インスタンスが使用する最小メモリ量をメガバイト (MB) 単位で指定します。

EXEC sp_rds_configure 'min server memory (MB)', 1024;

max server memory (MB)

RDS インスタンスが使用する最大メモリ量をメガバイト (MB) 単位で指定します。

EXEC sp_rds_configure 'max server memory (MB)', 4096;

blocked process threshold (s)

ブロックされたプロセスを報告するためのしきい値を秒単位で指定します。

EXEC sp_rds_configure 'blocked process threshold (s)', 20;

nested triggers

入れ子になったトリガーを有効または無効にします。有効な値:

  • 0:無効。

  • 1:有効。

EXEC sp_rds_configure 'nested triggers', 1;

Ad Hoc Distributed Queries

アドホック分散クエリを有効または無効にします。有効な値:

  • 0:無効。

  • 1:有効。

EXEC sp_rds_configure 'Ad Hoc Distributed Queries', 1;

clr enabled

ユーザーが作成した共通言語ランタイム (CLR) アセンブリの実行を有効または無効にします。有効な値:

  • 0:無効。

  • 1:有効。

EXEC sp_rds_configure 'clr enabled', 1;

default full-text language

全文検索の既定の言語を指定します。一般的な値は次のとおりです:

  • 0:既定の言語。オペレーティングシステムのロケールによって既定値が決まります。

  • 1033:英語。

  • 2052:簡体字中国語。

すべての値を表示

言語

説明

0

ニュートラル

ニュートラル

1025

アラビア語

アラビア語

1026

ブルガリア語

ブルガリア語

1027

カタロニア語

カタロニア語

1028

繁体字中国語

繁体字中国語

1029

チェコ語

チェコ語

1030

デンマーク語

デンマーク語

1031

ドイツ語

ドイツ語

1032

ギリシャ語

ギリシャ語

1033

英語

英語

1036

フランス語

フランス語

1037

ヘブライ語

ヘブライ語

1039

アイスランド語

アイスランド語

1040

イタリア語

イタリア語

1041

日本語

日本語

1042

韓国語

韓国語

1043

オランダ語

オランダ語

1044

ブークモール

ノルウェー語 (ブークモール)

1045

ポーランド語

ポーランド語

1046

ブラジル語

ポルトガル語 (ブラジル)

1048

ルーマニア語

ルーマニア語

1049

ロシア語

ロシア語

1050

クロアチア語

クロアチア語

1051

スロバキア語

スロバキア語

1053

スウェーデン語

スウェーデン語

1054

タイ語

タイ語

1055

トルコ語

トルコ語

1056

ウルドゥー語

ウルドゥー語

1057

インドネシア語

インドネシア語

1058

ウクライナ語

ウクライナ語

1060

スロベニア語

スロベニア語

1062

ラトビア語

ラトビア語

1063

リトアニア語

リトアニア語

1066

ベトナム語

ベトナム語

1081

ヒンディー語

ヒンディー語

1086

マレー語 (マレーシア)

マレー語 (マレーシア)

1093

ベンガル語 (インド)

ベンガル語 (インド)

1094

パンジャブ語

パンジャブ語

1095

グジャラート語

グジャラート語

1097

タミル語

タミル語

1098

テルグ語

テルグ語

1099

カンナダ語

カンナダ語

1100

マラヤーラム語

マラヤーラム語

1102

マラーティー語

マラーティー語

2052

簡体字中国語

簡体字中国語

2057

イギリス英語

イギリス英語

2070

ポルトガル語

ポルトガル語

2074

セルビア語 (ラテン)

セルビア語 (ラテン)

3076

中国語 (香港特別行政区)

中国語 (香港特別行政区)

3082

スペイン語

スペイン語

3098

セルビア語 (キリル)

セルビア語 (キリル)

4100

中国語 (シンガポール)

中国語 (シンガポール)

5124

中国語 (マカオ特別行政区)

中国語 (マカオ特別行政区)

EXEC sp_rds_configure 'default full-text language', 2052;

default language

インスタンスの既定の言語を指定します。一般的な値は次のとおりです:

  • 0:英語 (米国)。

  • 30:簡体字中国語。

すべての値を表示

言語

説明

0

英語

英語 (米国)

1

ドイツ語

ドイツ語

2

フランス語

フランス語

3

日本語

日本語

4

デンマーク語

デンマーク語

5

スペイン語

スペイン語

6

イタリア語

イタリア語

7

オランダ語

オランダ語

8

ノルウェー語

ノルウェー語

9

ポルトガル語

ポルトガル語

10

フィンランド語

フィンランド語

11

スウェーデン語

スウェーデン語

12

チェコ語

チェコ語

13

ハンガリー語

ハンガリー語

14

ポーランド語

ポーランド語

15

ルーマニア語

ルーマニア語

16

クロアチア語

クロアチア語

17

スロバキア語

スロバキア語

18

スロベニア語

スロベニア語

19

ギリシャ語

ギリシャ語

20

ブルガリア語

ブルガリア語

21

ロシア語

ロシア語

22

トルコ語

トルコ語

23

イギリス英語

イギリス英語

24

エストニア語

エストニア語

25

ラトビア語

ラトビア語

26

リトアニア語

リトアニア語

27

ポルトガル語 (ブラジル)

ポルトガル語 (ブラジル)

28

繁体字中国語

繁体字中国語

29

韓国語

韓国語

30

簡体字中国語

簡体字中国語

31

アラビア語

アラビア語

32

タイ語

タイ語

33

ノルウェー語 (ブークモール)

ノルウェー語 (ブークモール)

EXEC sp_rds_configure 'default language', 30;

max text repl size (B)

レプリケーション プロセスでのテキストデータの最大サイズをバイト単位で指定します。

テキストのレプリケーション最大サイズを 100 MB に設定するには:

EXEC sp_rds_configure 'max text repl size (B)', 104857600;

optimize for ad hoc workloads

アドホック ワークロードのプラン キャッシュの最適化を有効にするかどうかを指定します。有効な値:

  • 0:無効。

  • 1:有効。

EXEC sp_rds_configure 'optimize for ad hoc workloads', 1;

query governor cost limit

クエリの推定コストの上限を指定します。値 0 はクエリ ガバナーを無効にします。

EXEC sp_rds_configure 'query governor cost limit', 10;

recovery interval (min)

データベースの復旧にかかる最大時間を分単位で指定します。

EXEC sp_rds_configure 'recovery interval (min)', 60;

remote login timeout (s)

リモート ログインのタイムアウト期間を秒単位で指定します。

EXEC sp_rds_configure 'remote login timeout (s)', 30;

remote query timeout (s)

リモート クエリのタイムアウト期間を秒単位で指定します。

EXEC sp_rds_configure 'remote query timeout (s)', 60;

query wait (s)

タイムアウトする前にクエリがメモリ リソースを待機する時間を秒単位で指定します。

EXEC sp_rds_configure 'query wait (s)', 5;

min memory per query (KB)

クエリの実行に割り当てられる最小メモリ量をキロバイト (KB) 単位で指定します。

EXEC sp_rds_configure 'min memory per query (KB)', 1024;

in-doubt xact resolution

システムが未確定の分散トランザクションをどのように解決するかを指定します。有効な値:

  • 0 (RDS Cluster Edition 以外のインスタンスのデフォルト):自動解決なし。システムは未確定トランザクションを自動的に解決せず、手動での介入が必要です。

  • 1:推定コミット。システムが未確定トランザクションを解決するための十分な情報を持っていない場合、デフォルトでトランザクションをコミットします。

  • 2 (RDS Cluster Edition インスタンスのデフォルト):推定ロールバック。システムが未確定トランザクションを検出した場合、デフォルトでトランザクションをロールバックします。

EXEC sp_rds_configure 'in-doubt xact resolution', 2;

使用法

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

説明

ログインにサーバーロールを付与します。利用可能なロールは setupadminprocessadmin です。その他の権限を持つアカウントを作成する場合、またはアカウント権限の詳細については、「SA 権限を持つアカウントの作成」および「アカウント権限」をご参照ください。

使用方法

EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
  • ログイン名を指定します。

  • ロール名を指定します。有効な値は setupadminprocessadmin です。

よくある質問

Q:標準アカウントで EXEC sp_rds_drop_database 'dbtest'; コマンドを実行すると、Cannot use KILL to kill your own process. エラーが発生するのはなぜですか。

A:ターゲットデータベース以外のデータベースに接続したコマンドウィンドウから、特権アカウントを使用してコマンドを実行してください。また、アカウントがターゲットデータベースに対して必要な権限を持っていることを確認してください。詳細については、「アカウント権限の変更」をご参照ください。