Discussion:
バックアップの復元とデータベースアクセス権の消失
(too old to reply)
unknown
2007-08-22 13:10:01 UTC
Permalink
山岸です。お世話になります。

Windows 2000 SP4,
SQL Server 2000 Develper Edition SP4(8.00.2187)

2台のPCで同一データベース名で内容が完全に同じものを作成しようとしています。上記とは別のWindowsXP上のSQL Server 2000
Desktop Engine
で作成したデータベースのフルバックアップを、上記の既に同一データベース名として作成済みのデータベースに復元して同じ内容にしようとしました。

上記PCではEnterprise Maneger を使用してサーバーログインの設定と目的とするデータベースへのアクセス権を予め与えておきます。

そこで、Desktop Engine で作成したバックアップを復元した結果、Enterprise Maneger
上で、目的とする「データベース」の「ユーザー」-「プロパティー」-「権限」はバックアップしたものと同じ権限が設定されていますが、サーバーの「セキュリティー」-「ログイン」-「プロパティー」-「データベースアクセス」では予め与えておいた権限が削除されています。ここで、権限設定を追加しようとすると、「エラー21002:[SQL-DMO]
ユーザー****は既に存在しています。」となって権限の再設定が不可能で、結果としてこのデータベースにはSQL Server 認証では接続出来ません。
これを解決するには、目的とする「データベース」で「ユーザー」を一旦削除した後、サーバーの「セキュリティー」-「ログイン」-「プロパティー」-「データベースアクセス」で権限の再設定を行いますが、次の問題があります。即ち:データベースログイン別にデータベースオブジェクトに対する権限を細かく(SELECT,
UPDATE, INSERT, , )規定している場合は、目的とするデータベース上で権限の再設定を行わねばならず極めて不便です。
データベースの復元を行ってもサーバーのデータベースアクセス権を削除されない方法はないのでしょうか。
--
山岸
Suzuki
2007-08-27 13:02:02 UTC
Permalink
ユーザーを削除しちゃったら権限などは全て消えてしまうので、当然の動作だと思います。
ということは、「エラー21002:[SQL-DMO] ユーザー****は既に存在しています。」
のエラーが出ることが問題なんでしょう。つまりあるはずのユーザーが見えないことが問題なのでしょう。

やりたいことは単なる "データベースの移行" なので簡単です。次のページに説明があります。
http://support.microsoft.com/default.aspx?scid=kb;ja;314546

Loading...