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

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

最終更新日:Nov 09, 2025

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

はい

統計情報を更新するターゲットデータベースの名前。次の例は、このパラメーターの使用方法を示しています:

-- 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 インスタンスタイプの vCore 数を超えることはできません。このパラメーターは、SQL Server 2012 以前のバージョンではサポートされていません。次の例は、このパラメーターの使用方法を示しています:

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

@timeout_seconds

いいえ

統計情報更新操作のタイムアウト期間 (秒)。デフォルト値は 3600 秒 (1 時間) です。次の例は、このパラメーターの使用方法を示しています:

-- タイムアウト期間を 7200 秒 (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] です。数式は次のとおりです: 値 = 変更された行数 × 100 / 総行数。統計情報の更新をトリガーするには、計算結果が指定された値以下である必要があります。

    -- テーブルに 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 倍以上である必要があります。

  • このプロシージャは、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 (%)

インデックスページの充填率を指定します。

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)

SQL Server インスタンスが使用する最小メモリ量を指定します。

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

max server memory (MB)

SQL Server インスタンスが使用する最大メモリ量を指定します。

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: 有効にします。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

EXEC sp_rds_configure 'nested triggers', 1;

Ad Hoc Distributed Queries

アドホック分散クエリを有効にするかどうかを指定します。有効値:

  • 0: 無効化。

  • 1: 有効にします。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

EXEC sp_rds_configure 'Ad Hoc Distributed Queries', 1;

clr enabled

共通言語ランタイム (CLR) を有効にするかどうかを指定します。有効値:

  • 0: 無効化。

  • 1: 有効化。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

EXEC sp_rds_configure 'clr enabled', 1;

default full-text language

デフォルトのフルテキスト検索言語を指定します。一般的な値:

  • 0: デフォルト言語。デフォルト言語は、オペレーティングシステムのロケールによって決まります。

  • 1033: 英語。

  • 2052: 簡体字中国語。

すべての値を表示するにはクリックしてください

言語 (英語)

言語 (中国語)

0

Neutral

ニュートラル

1025

Arabic

アラビア語

1026

Bulgarian

ブルガリア語

1027

Catalan

カタロニア語

1028

Traditional Chinese

繁体字中国語

1029

Czech

チェコ語

1030

Danish

デンマーク語

1031

German

ドイツ語

1032

Greek

ギリシャ語

1033

English

英語

1036

French

フランス語

1037

Hebrew

ヘブライ語

1039

Icelandic

アイスランド語

1040

Italian

イタリア語

1041

Japanese

日本語

1042

Korean

韓国語

1043

Dutch

オランダ語

1044

Bokmål

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

1045

Polish

ポーランド語

1046

Brazilian

ブラジルポルトガル語

1048

Romanian

ルーマニア語

1049

Russian

ロシア語

1050

Croatian

クロアチア語

1051

Slovak

スロバキア語

1053

Swedish

スウェーデン語

1054

Thai

タイ語

1055

Turkish

トルコ語

1056

Urdu

ウルドゥ語

1057

Indonesian

インドネシア語

1058

Ukrainian

ウクライナ語

1060

Slovenian

スロベニア語

1062

Latvian

ラトビア語

1063

Lithuanian

リトアニア語

1066

Vietnamese

ベトナム語

1081

Hindi

ヒンディー語

1086

Malay - Malaysia

マレー語 (マレーシア)

1093

Bengali (India)

ベンガル語 (インド)

1094

Punjabi

パンジャブ語

1095

Gujarati

グジャラート語

1097

Tamil

タミル語

1098

Telugu

テルグ語

1099

Kannada

カンナダ語

1100

Malayalam

マラヤーラム語

1102

Marathi

マラーティー語

2052

Simplified Chinese

簡体字中国語

2057

British English

イギリス英語

2070

Portuguese

ポルトガル語

2074

Serbian (Latin)

セルビア語 (ラテン)

3076

Chinese (Hong Kong SAR, PRC)

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

3082

Spanish

スペイン語

3098

Serbian (Cyrillic)

セルビア語 (キリル)

4100

Chinese (Singapore)

中国語 (シンガポール)

5124

Chinese (Macao SAR)

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

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

default language

デフォルト言語を指定します。一般的な値:

  • 0: 英語 (米国)。

  • 30: 簡体字中国語。

すべての値を表示するにはクリックしてください

言語 (英語)

言語 (中国語)

0

English

英語 (米国)

1

German

ドイツ語

2

French

フランス語

3

Japanese

日本語

4

Danish

デンマーク語

5

Spanish

スペイン語

6

Italian

イタリア語

7

Dutch

オランダ語

8

Norwegian

ノルウェー語

9

Portuguese

ポルトガル語

10

Finnish

フィンランド語

11

Swedish

スウェーデン語

12

Czech

チェコ語

13

Hungarian

ハンガリー語

14

Polish

ポーランド語

15

Romanian

ルーマニア語

16

Croatian

クロアチア語

17

Slovak

スロバキア語

18

Slovenian

スロベニア語

19

Greek

ギリシャ語

20

Bulgarian

ブルガリア語

21

Russian

ロシア語

22

Turkish

トルコ語

23

British English

英語 (英国)

24

Estonian

エストニア語

25

Latvian

ラトビア語

26

Lithuanian

リトアニア語

27

Brazilian Portuguese

ブラジルポルトガル語

28

Traditional Chinese

繁体字中国語

29

Korean

韓国語

30

Simplified Chinese

簡体字中国語

31

Arabic

アラビア語

32

Thai

タイ語

33

Norwegian (Bokmål)

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

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

EXEC sp_rds_configure 'default language', 30;

max text repl size (B)

レプリケーションプロセスにおけるテキストの最大サイズを指定します。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

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

optimize for ad hoc workloads

アドホックワークロードに最適化された動的管理ビューを有効にするかどうかを指定します。有効な値:

  • 0: 無効にします。

  • 1: 有効にします。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

query governor cost limit

クエリの最大実行時間を秒単位で指定します。値 0 は時間制限がないことを示します。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

EXEC sp_rds_configure 'query governor cost limit', 10;

recovery interval (min)

回復間隔を指定します。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

remote login timeout (s)

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

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

remote query timeout (s)

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

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

query wait (s)

クエリがリソースを待機する時間を指定します。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

min memory per query (KB)

各クエリに割り当てられる最小メモリ量を指定します。

説明

このパラメーターは、2023 年 5 月より前に作成されたインスタンスではサポートされていません。

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

in-doubt xact resolution

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

  • 0 (非クラスターインスタンスのデフォルト): 自動解決を無効にします。システムは未確定の分散トランザクションを自動的に処理しません。手動で処理する必要があります。

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

  • 2 (クラスターインスタンスのデフォルト): 自動ロールバックを想定します。システムが未確定トランザクションに遭遇した場合、デフォルトでトランザクションをロールバックします。

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

使用方法

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

説明

ログインユーザーにサーバーレベルのロールを付与します。サポートされているロールは setupadminprocessadmin です。他の権限を作成したり、アカウント権限の詳細については、「SA 権限を持つアカウントの作成」および「アカウント権限リスト」をご参照ください。

使用方法

EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
  • 最初のパラメーターはユーザー名を指定します。

  • 2 番目のパラメーターはロール名を指定します。サポートされているロールは setupadminprocessadmin です。

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: ターゲットデータベースに接続されていないコマンドウィンドウで、特権アカウントを使用してこのコマンドを実行できます。アカウントがターゲットデータベースで必要な権限を持っていることを確認してください。詳細については、「アカウントの権限を変更する」をご参照ください。