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

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

最終更新日:Mar 19, 2024

このトピックでは、SQL Server 2012以降を実行する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 db
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 db
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インスタンスのアカウント権限」をご参照ください。 詳細については、「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インスタンス

説明

データベースとAlways On可用性グループがRDSインスタンスで実行されている場合、Always on可用性グループがRDSインスタンスから削除された後にのみ変更データキャプチャ (CDC) を使用できます。 CDCを使用しないことを推奨します。

説明

このストアドプロシージャは、データベースの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のロール名>' 

CDCを無効にする

T-SQLコマンド

sp_rds_cdc_disable_db

サポートされているRDSインスタンス

RDS High-availability Editionを実行するRDSインスタンス

説明

Always On可用性グループ機能を有効にする場合は、CDCを無効にすることを推奨します。

説明

このストアドプロシージャは、データベースの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 = '<CDCが有効になっているインスタンスの名前>'
    
-特定のテーブルに対してCDCが有効になっているインスタンスの名前を取得するメソッドです。
SELECT capture_instance
cdc.change_tablesから
WHERE source_schema = '<スキーマ名>'
    AND source_name = '<テーブル名>' 

RDSインスタンスのパラメーターの設定

T-SQLコマンド

sp_rds_configure

サポートされているRDSインスタンス

  • RDS High-availability Editionを実行するRDSインスタンス

  • RDS Basic Editionを実行するRDSインスタンス

説明

このストアドプロシージャは、RDSインスタンスのパラメーターを設定するために使用されます。 RDSインスタンスにセカンダリRDSインスタンスがスタンバイとして提供されている場合、システムは新しいパラメーター設定をセカンダリRDSインスタンスに同期します。 次の表に、サポートされるパラメーターを示します。 詳細については、「Microsoftドキュメント」をご参照ください。

パラメーター

説明

使用例

充填率 (%)

インデックスページの塗りつぶし係数の割合。

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

最大ワーカースレッド

クエリを実行し、要求を並列に処理するワーカースレッドの最大数。

EXEC sp_rds_configure 'max worker threads' 、100;

並列処理のコストしきい値

並列実行のオーバーヘッドしきい値。

EXEC sp_rds_configure 'cost threshold for parallelism '、30;

最大並列度

クエリの最大並列処理度。

EXEC sp_rds_configure 'max degree of parallelism ', 4;

最小サーバーメモリ (MB)

RDSインスタンスの最小メモリ量。

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

最大サーバーメモリ (MB)

RDSインスタンスの最大メモリ量。

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

ブロックされたプロセスしきい値

ブロックされたプロセスのしきい値。

EXEC sp_rds_configure 'ブロックされたプロセスしきい値' 、20;

ネストされたトリガー

ネストされたトリガーを有効にするかどうかを指定します。 有効な値:

  • 0: ネストされたトリガーを無効にします。

  • 1: ネストされたトリガーを有効にします。

説明

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

EXEC sp_rds_configure「ネストされたトリガー」、1;

アドホック分散クエリ

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

  • 0: アドホック分散クエリを無効にします。

  • 1: アドホック分散クエリを有効にします。

説明

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

EXEC sp_rds_configure 'アドホック分散クエリ' 、1;

clrが有効

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

  • 0: CLRを無効にします。

  • 1: CLRを有効にします。

説明

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

EXEC sp_rds_configure 'clr enabled '、1;

デフォルトのフルテキスト言语

デフォルトのフルテキスト検索言語。 有効な値:

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

  • 1033: 英語を使用します。

説明

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

EXEC sp_rds_configure 'デフォルトのフルテキスト言語' 、0;

デフォルト言語

デフォルトの言語。 有効な値:

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

  • 1033: 英語を使用します。

説明

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

EXEC sp_rds_configure「デフォルト言語」、1033;

最大テキストreplサイズ (B)

レプリケーション中のテキストの最大サイズ。

説明

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

次のステートメントを実行して、最大サイズを100 MBに設定できます。

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

アドホックワークロードの最適化

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

  • 0: アドホックワークロード用に最適化された動的管理ビューを無効にします。

  • 1: アドホックワークロード用に最適化された動的管理ビューを有効にします。

説明

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

EXEC sp_rds_configure 'アドホックワークロードの最適化' 、1;

クエリガバナーのコスト制限

クエリの最大実行時間。 単位は秒です。 値0は、制限が課されないことを示す。

説明

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

EXEC sp_rds_configure 'クエリガバナ費用制限' 、10;

回復間隔 (分)

回復間隔。

説明

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

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

リモートログインタイムアウト (s)

リモートログインのタイムアウト期間。

説明

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

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

リモートクエリのタイムアウト (s)

リモートクエリのタイムアウト期間。

説明

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

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

クエリ待機 (s)

クエリがタイムアウトする前にリソースを待機する期間。

説明

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

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

クエリごとの最小メモリ (KB)

各クエリで消費される最小メモリ量。

説明

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

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

使用法

EXEC sp_rds_configure '<パラメータ>',<パラメータ値>
  • 最初のパラメーターは、設定するパラメーターの名前を指定します。

  • 2番目のパラメーターは、パラメーターの値を指定します。

RDSインスタンスへのリンクサーバーの追加

T-SQLコマンド

sp_rds_add_linked_server

サポートされているRDSインスタンス

  • SQL Server 2012 SEを実行するRDSインスタンス、 SQL Server 2016 SE、SQL Server 2017 SE、SQL Server 2019 SE、およびSQL Server 2022 SE on RDS High-availability Editionを使用し、汎用または専用のインスタンスタイプを使用します。

  • SQL Server 2012 EEとを実行するRDSインスタンス RDS High-availability EditionにEEを2016し、汎用または専用のインスタンスタイプを使用するSQL Server

  • RDS Cluster EditionでSQL Server 2017 EE、SQL Server 2019 EE、およびSQL Server 2022 EEを実行し、汎用または専用のインスタンスタイプを使用するRDSインスタンス

説明

共有インスタンスタイプは、このストアドプロシージャをサポートしていません。 詳細については、「プライマリ ApsaraDB RDS インスタンスタイプ」をご参照ください。

説明

このストアドプロシージャは、RDSインスタンスにリンクサーバーを追加するために使用されます。 このストアドプロシージャは、分散トランザクションをサポートします。 RDSインスタンスにリンクサーバーを追加すると、リンクサーバーの設定が関連付けられたセカンダリRDSインスタンスにレプリケートされます。 この方法では、プライマリ /セカンダリの切り替え後にリンクサーバーを追加する必要はありません。

使用法

DECLARE
@ linked_server_name sysname = N'yangzhao_slb' 、@ data_source sysname = N' **** .sqlserver.rds.aliyuncs.com,3888 ', -- style: 10.1.10.1,1433
@ user_name sysname = N'ay15 '、@ password nvarchar(128) = N' ******* '、@ source_user_name sysname = N'test' 、@ source_password nvarchar(128) = N' ****** '、@ 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,
@ パスワード、@ 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インスタンス

説明

このストアドプロシージャは、ログオンユーザーにサーバーの役割を割り当てるために使用されます。 ロールには、setupadminprocessadminが含まれます。 アカウント権限とアカウントの作成方法の詳細については、「ApsaraDB RDS For SQL Serverインスタンスのシステム管理者アカウントの作成」および「ApsaraDB RDS for SQL Serverインスタンスのアカウント権限」をご参照ください。

使用法

EXEC sp_rds_set_server_role @ login_name='test_login',@ server_role='setupadmin'
  • 最初のパラメーターは、アカウント名を指定します。

  • 2番目のパラメーターは、ロール名を指定します。 使用可能なロールはsetupadminprocessadminです。

よくある質問

なぜはあなた自身のプロセスを殺すためにKILLを使用できません。 標準アカウントを使用してEXEC sp_rds_drop_database 'dbtest'; ステートメントを実行すると、エラーが報告されましたか?

特権アカウントを使用して、必要なデータベース以外のデータベースのCLIでステートメントを実行する必要があります。 特権アカウントに、必要なデータベースに対する操作を実行する権限があることを確認します。 特権アカウントの詳細については、「ApsaraDB RDS For SQL Serverインスタンスのアカウント権限」をご参照ください。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスの標準アカウントの権限の変更」をご参照ください。