シナリオ:
SQLAzureから取得したbacpacから復元しようとしています。
新しいSQLAzureデータベースインスタンス、またはオンプレミスサーバーのいずれかに。以前の管理ポータルまたはDACフレームワーククライアントサイドツールの場合。
正常に動作しているようで、当然、復元後にSQLユーザーはSQLログインにマップされません。
私が試したこと:
次のようにマップしようとすると、次
alter user MyUser with login = MyLoginのように失敗します。
メッセージ33016、レベル16、状態1、行6ユーザーをログインに再マップすることはできません。再マッピングは、WindowsまたはSQLログインにマッピングされたユーザーに対してのみ実行できます。
実行select * from sys.database_principalsするとユーザーが一覧表示されますが、比較のために作成したSQL認証済みユーザーよりもはるかに長いSIDを使用します。
オンプレミスで実行した場合sp_change_users_login 'Report'、ユーザーはリストされていないため、孤立しているとは検出されません。
オンプレミスでsp_change_users_loginを使用しようとすると、次のように失敗します。
メッセージ15291、レベル16、状態1、プロシージャsp_change_users_login、行114このプロシージャを終了します。ユーザー名「MyUser」が存在しないか無効です。
オンプレミスで、ログインプロパティUIの[ユーザーマッピング]セクションから試してみると、次のようになります。
ユーザー「マイユーザー」の作成に失敗しました。...ユーザー、グループ、またはロール「MyUser」は現在のデータベースにすでに存在します。
なんらかの理由で復元中に何かが破損した場合に備えて、もう一度やり直してみましたが、同じ結果になりました。
質問:
これらのSQLユーザーを再マップするにはどうすればよいですか?
それらを最初から再作成する必要がなく、データベース内のスキーマオブジェクトとの関係を避けたいですか?
いくつかの追加情報:
私がSQLAzureユーザーに見ているものとよく似ているSQLユーザーの1つのタイプは、
create user AnotherUser without login
これらは、上記で使用した3つのマッピングアプローチすべてでまったく同じように失敗します。これは、通常のSQLユーザーのどのアプローチにも当てはまりません。さらに、sidも長く、同じ「0x010500000000000903000000」で始まります