Amazonrds-ms-sql-dba-tasks

提供:Dev Guides
移動先:案内検索

Amazon RDS-MS SQL DBAタスク

RDSサービスとして、MSSQL DBにはマネージドサービスとして利用可能な多くのDBAタスクがあります。 DBへのシェルアクセスはありませんが、コンソールまたはクライアントソフトウェアのコマンドを使用して、さまざまなDBAアクティビティを実行できます。 以下は、Amazon RDS Ms SQLサーバーで実行される最も一般的で頻繁に使用されるDBAタスクです。

変更データのキャプチャ

CDCは、テーブル内のデータに加えられた変更をキャプチャします。 ユーザーテーブルに加えられた変更は、対応する変更テーブルにキャプチャされます。 これらの変更テーブルは、経時的な変更の履歴ビューを提供します。 SQL Serverが提供する変更データキャプチャ機能を使用すると、変更データを簡単かつ体系的に使用できます。

RDS MSSQLサーバーに接続されたSSMSで以下のコマンドを使用して、CDCを有効または無効にします。

#Enable CDC for RDS DB Instance
exec msdb.dbo.rds_cdc_enable_db ''

#Disable CDC for RDS DB Instance
exec msdb.dbo.rds_cdc_disable_db ''

次に、特定のテーブルの変更を追跡するために、次のコマンドでストアドプロシージャsp_cdc_enable_tableを使用します。

#Begin tracking a table
exec sys.sp_cdc_enable_table
   @source_schema           = N''
,  @source_name             = N''
,  @role_name               = N''
, @captured_column_list   = ''
;

tempdbデータベースオプションの変更

tempdbシステムデータベースは、SQL Serverのインスタンスに接続しているすべてのユーザーが利用できるグローバルリソースであり、以下を保持するために使用されます。

  • グローバルまたはローカルの一時テーブル、一時ストアドプロシージャ、テーブル変数、カーソルなど、明示的に作成された一時ユーザーオブジェクト。
  • たとえば、SQL Serverデータベースエンジンによって作成された内部オブジェクトは、スプールまたは並べ替えの中間結果を格納するための作業テーブルです。
  • 行バージョン管理分離またはスナップショット分離トランザクションを使用して読み取りコミットを使用するデータベース内のデータ変更トランザクションによって生成される行バージョン。

以下は、さまざまなDBAアクティビティ用にRDS MSSQL tempdbを変更する方法の例です。

# setting the size to 100 GB and file growth to 10 percent.
alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)

# set the MAXSIZE property to prevent tempdb database from using all available disk space.
alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)

# Shrinking the tempdb Database file size and requests a new size
exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;

オフラインからオンラインへの移行

次のコマンドを使用して、Amazon RDS DBインスタンス上のMicrosoft SQL ServerデータベースをOFFLINEからONLINEに移行できます。

EXEC rdsadmin.dbo.rds_set_database_online name

英語以外の文字セット

RDS MSSQLインスタンスの作成中、DB用にマークされたデフォルトの照合は英語です。 ただし、照合の名前とともにCOLLATE句を適用することで、英語以外の別の言語に変更できます。 以下の例はそれを示しています。

CREATE TABLE [dbo].[Account]
(
    [AccountID] [nvarchar](10) NOT NULL,
    [AccountName] [nvarchar](100) COLLATE Japanese_CI_AS NOT NULL
) ON [PRIMARY];