このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

ストアドプロシージャ

更新日時2025-03-31 16:34

このトピックでは、SQL Server 2012 以降を実行する ApsaraDB RDS インスタンスでサポートされているストアドプロシージャについて説明します。

使用方法

このトピックで説明されているコマンドには、GO バッチ区切り文字が含まれており、SQL Server Management Studio (SSMS)での実行に適しています。 Data Management (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 操作が実行されます。詳細については、「UPDATE STATISTICS (Transact-SQL)」をご参照ください。

パラメーター

必須

説明

パラメーター

必須

説明

@db_name

はい

統計を更新するデータベースの名前。例:

-- データベース名のみを指定します。sp_updatestats 操作が実行されます。
EXEC sp_rds_update_db_stats @db_name = 'test_db';

@sample_percent

いいえ

統計のサンプリングレート。このパラメーターのデータ型は float です。有効値:[0, 100]

このパラメーターを指定しない場合は、デフォルトのサンプリングレートが適用されます。詳細については、「UPDATE STATISTICS (Transact-SQL)」をご参照ください。例:

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

@max_dop

いいえ

並列処理の次数。このパラメーターのデータ型は int です。デフォルト値:0。このパラメーターの値は、RDS インスタンスタイプで定義されている CPU コア数以下である必要があります。このパラメーターは、SQL Server 2012 以前のバージョンを実行するインスタンスではサポートされていません。例:

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

@timeout_seconds

いいえ

統計更新のタイムアウト期間。単位:秒。デフォルト値:3600(1 時間)。例:

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

@modification_threshold

いいえ

統計更新の変更しきい値。このパラメーターのデータ型は int です。デフォルト値:0

  • このパラメーターを 0 に設定すると、次の推奨ポリシーがしきい値に適用されます。

    • テーブルに 500 行未満のデータが含まれている場合、しきい値は 30% に設定されます。

    • テーブルに 500 ~ 1,000,000 行のデータが含まれている場合、しきい値は 20% に設定されます。

    • テーブルに 1,000,000 行を超えるデータが含まれている場合、しきい値は 5% に設定されます。

  • このパラメーターを別の値に設定する場合は、次の式を使用して値を計算する必要があります。しきい値 = 変更する行数 × 100 / 行の総数。値の範囲は 0 ~ 100 です。指定された値を超えた場合にのみ、統計の更新がトリガーされます。

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

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 master
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 master
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 インスタンスのアカウント権限」をご参照ください。詳細については、「アカウントの権限を変更する」をご参照ください。

説明

このストアドプロシージャは、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 Cluster Edition を実行する RDS インスタンス

説明

このストアドプロシージャは、データベースの変更データキャプチャ(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 Cluster Edition を実行する RDS インスタンス

説明

このストアドプロシージャは、データベースの 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
FROM 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 ドキュメント」をご参照ください。

パラメーター

説明

パラメーター

説明

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 インスタンスの最小メモリ量。

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

max server memory (MB)

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

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 月より前に作成された RDS インスタンスではサポートされていません。

EXEC sp_rds_configure 'nested triggers', 1;

Ad Hoc Distributed Queries

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

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

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

説明

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

EXEC sp_rds_configure 'Ad Hoc Distributed Queries', 1;

clr enabled

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

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

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

説明

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

EXEC sp_rds_configure 'clr enabled', 1;

default full-text language

デフォルトの全文検索言語。有効値:

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

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

説明

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

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

default language

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

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

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

説明

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

EXEC sp_rds_configure 'default language', 1033;

max text repl size (B)

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

説明

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

次の文を実行して、最大サイズを 100 MB に設定できます。

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

optimize for ad hoc workloads

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

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

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

説明

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

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

query governor cost limit

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

説明

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

EXEC sp_rds_configure 'query governor cost limit', 10;

recovery interval (min)

回復間隔。

説明

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

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

remote login timeout (s)

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

説明

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

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

remote query timeout (s)

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

説明

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

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

query wait (s)

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

説明

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

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

min memory per query (KB)

各クエリによって消費される最小メモリ量。

説明

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

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

in-doubt xact resolution

システムが不確定な分散トランザクションを処理する方法。有効値:

  • 0: 自動処理を無効にします。これは、RDS Cluster Edition を実行していない RDS インスタンスのデフォルト値です。システムは不確定な分散トランザクションを自動的に処理せず、手動処理が必要です。

  • 1: 不確定な分散トランザクションが自動的にコミットされると想定します。システムに不確定なトランザクションを処理するための十分な情報がない場合、トランザクションは自動的にコミットされます。

  • 2: 不確定な分散トランザクションが自動的にロールバックされると想定します。これは、RDS Cluster Edition を実行する RDS インスタンスのデフォルト値です。不確定な分散トランザクションがシステムにコミットされている場合、不確定な分散トランザクションは自動的にロールバックされます。

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

使用方法

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

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

RDS インスタンスにリンクサーバーを追加する

T-SQL コマンド

sp_rds_add_linked_server

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

  • 汎用または専用インスタンスファミリーに属する RDS インスタンス。共有インスタンスファミリーはサポートされていません。インスタンスファミリーの詳細については、「インスタンスファミリー」をご参照ください。

  • サブスクリプションおよび従量課金制の RDS インスタンス。サーバーレス RDS インスタンスはサポートされていません。詳細については、「概要」をご参照ください。

説明

このストアドプロシージャは、RDS インスタンスにリンクサーバーを追加するために使用されます。このストアドプロシージャは、分散トランザクションをサポートしています。RDS インスタンスにリンクサーバーを追加した後、システムはリンクサーバーの構成を関連付けられたセカンダリ RDS インスタンスにレプリケートします。これにより、プライマリ/セカンダリ スイッチオーバー後にリンクサーバーを追加する必要がなくなります。詳細については、「プライマリ ApsaraDB RDS for SQL Server インスタンスとセカンダリ ApsaraDB RDS for SQL Server インスタンス間でワークロードをスイッチオーバーする」をご参照ください。

使用方法

DECLARE
@linked_server_name sysname = N'yangzhao_slb', -- リンクサーバーの名前。
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', -- ターゲット RDS インスタンスの IP アドレスとポート。形式:IPアドレス,ポート。
@user_name sysname = N'ay15' , -- ターゲット RDS インスタンスのログインユーザー名。
@password nvarchar(128) = N'******', -- ターゲット RDS インスタンスのログインパスワード。
@source_user_name sysname = N'test', -- 現在の RDS インスタンスにリンクサーバーを作成するためのログインユーザー名。
@source_password nvarchar(128) = N'******', -- 現在の RDS インスタンスにリンクサーバーを作成するためのログインパスワード。
-- RDS インスタンスをサーバーに接続するために必要な設定項目。設定項目は 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

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 番目のパラメーターには、データベースの新しい名前を指定します。

サーバーロールを割り当てる

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 です。

FAQ

標準アカウントを使用して EXEC sp_rds_drop_database 'dbtest'; 文を実行すると、Cannot use KILL to kill your own process. エラーが報告されるのはなぜですか?

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

  • 目次 (1, M)
  • 使用方法
  • データベース統計を更新する
  • RDS インスタンスのデータベース間でデータをレプリケートする
  • データベースをオンラインモードに設定する
  • RDS インスタンスの一部またはすべてのデータベースに対する権限をユーザーに付与する
  • インスタンスからデータベースを削除する
  • データベースの変更追跡を構成する
  • 変更データキャプチャを有効にする
  • CDC を無効にする
  • RDS インスタンスのパラメーターを構成する
  • RDS インスタンスにリンクサーバーを追加する
  • RDS インスタンスのトレースフラグを構成する
  • データベースの名前を変更する
  • サーバーロールを割り当てる
  • FAQ
フィードバック
phone お問い合わせ

Chat now with Alibaba Cloud Customer Service to assist you in finding the right products and services to meet your needs.

alicare alicarealicarealicare