DBMotoレプリケーションに必要なSQL Serverユーザ権限


【2014/1/30 記事改訂】

DBMotoで使用するSQL Serverユーザに必要な権限は下記の通りです。
ユーザ名を「dbmoto」とした場合の例となります。

■SQL Server Management Studioから簡易的に設定する場合

●テーブル用(ソース・ターゲット共通)

1. SQL Server Management Studioからデータベースに接続し、セキュリティ⇒ログイン⇒新しいログイン を選択します。

2. 認証方法は「SQL Server認証」を必ず選択してください。

3. ユーザマッピングの画面にて権限を付与したいレプリケーション対象のデータベース(スキーマ)にチェックを入れ、データベースロールにて「db_owner」にチェックを入れます。
※画面例ではVeeamBaukupというデータベースに対して権限を付与しています。
※レプリケーション対象のデータベースすべてに設定を行ってください。
※トランザクションレプリケーション(ミラーリング・シンクロナイゼーション)で、トリガーを使用する場合にはトリガーを配置するデータベースに対しても設定を行ってください。

●ディストリビュータ用

トランザクションレプリケーション(複製元ソース)でディストリビュータを使用する場合には、上記のテーブル専用ユーザとは別にsysadmin権限を持ったユーザが必要になります。
ユーザ作成画面にて、サーバーロールを選択し、サーバーロールで「sysadmin」にチェックを入れてユーザを作成してください。

■コマンドラインから最小限の権限を設定する場合:

●ミラーリング複製元ソース用

<※トリガー使用の場合>

// ログイン作成
>create login dbmoto with password = ‘dbmoto’;

// 使用データベース(テーブル用)※データベース名をclimbとする
>use climb;

// ユーザ作成
>create user dbmoto;

// セッション権限
>grant connect to dbmoto;

// 読み取り権限
>exec sp_addrolemember ‘db_datareader’, ‘dbmoto’; 又は
>grant select on schema::dbo to dbmoto; 又は
>grant select on dbo.テーブル名 to dbmoto;

// トリガー作成削除権限
>grant alter on schema::dbo to dbmoto;
>grant create table to dbmoto;

// 使用データベース(トリガーログテーブル用)※データベース名をdbmtrgとする
>use dbmtrg;

// ユーザ作成
>create user dbmoto;

// セッション権限
>grant connect to dbmoto;

// 読み取り権限
>exec sp_addrolemember ‘db_datareader’, ‘dbmoto’; 又は
>grant select on schema::dbo to dbmoto; 又は
>grant select on dbo.テーブル名 to dbmoto;

// テーブル作成削除権限
>grant alter on schema::dbo to dbmoto;
>grant create table to dbmoto;

// 編集権限
>exec sp_addrolemember ‘db_datawriter’, ‘dbmoto’ 又は
>grant insert, update, delete on schema::dbo to dbmoto;

<※ディストリビュータ使用の場合>

// テーブル用ログイン作成
>create login dbmoto with password = ‘dbmoto’;

// 使用データベース(テーブル用)※データベース名をclimbとする
>use climb;

// ユーザ作成
>create user dbmoto;

// セッション権限
>grant connect to dbmoto;

// 読み取り権限
>exec sp_addrolemember ‘db_datareader’, ‘dbmoto’; 又は
>grant select on schema::dbo to dbmoto; 又は
>grant select on dbo.テーブル名 to dbmoto;

// ディストリビュータ用ログイン作成
>create login dbmsa with password = ‘dbmsa’;
※トランザクションレプリケーション(複製元ソース)でディストリビュータを使用する場合には、テーブル専用ユーザとは別にsysadmin権限を持ったユーザが必要になります。 ここではユーザ名をdbmsaとしています。

// sysadmin 権限
>exec sp_addsrvrolemember ‘dbmsa’, ‘sysadmin’;

●ミラーリング複製先ターゲット用

// ログイン作成
>create login dbmoto with password = ‘dbmoto’;

// 使用データベース(テーブル用)※データベース名をclimbとする
>use climb;

// ユーザ作成
>create user dbmoto;

// セッション権限
>grant connect to dbmoto;

// 読み取り権限
>exec sp_addrolemember ‘db_datareader’, ‘dbmoto’; 又は
>grant select on schema::dbo to dbmoto; 又は
>grant select on dbo.テーブル名 to dbmoto;

// 編集権限
>exec sp_addrolemember ‘db_datawriter’, ‘dbmoto’ 又は
>grant insert, update, delete on schema::dbo to dbmoto;

// テーブル作成・TRUNCATE権限
>grant alter on schema::dbo to dbmoto;
>grant create table to dbmoto;

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください