Contained Databases の Contained User (DB 内にログイン可能なユーザーを作成) を使用した場合、複数 DB に対してクエリが実行できるかが気になったので検証してみました。
先に検証結果を書いてしまうと、軽く試してみたところではうまくできませんでした…。
■Contained User を使用して複数 DB にクエリを実行
Contained Databases を使用しない場合、複数 DB にクエリを実行するときの構成は以下のようになるかと思います。
一つのログインを複数のデータベースにユーザーとしてマッピングすることが可能ですので、そのログインがユーザーとして設定されるデータベースにアクセスが可能となります。
また、同じログインを使用しているため各ユーザーのログインで使用している SID も同じものとなります。
Contained Databases の Contained User を使用した場合は以下のようになります。
Contained User の場合、各データベース内でユーザー情報が完結した形になりますので、同一のユーザー名で作成しても同姓同名の他人扱いとなり、一つのログインで複数のデータベースを操作するといったことができないようです。
実際に、ユーザーデータベース1/2に同じ名称の Contained User を作成して、二つのデータベースを JOIN するクエリを実行してみたところ以下のようなエラーとなってしまいました。
軽く調べてみたところこのような情報が。
SQL Server v.Next (Denali) : More on contained databases and "contained users"
Contained User としてログインを作成した場合は単一のデータベースの操作に限定されてしまうのですかね??
歯切れが悪いですが、まずは検証した範囲で投稿を残してみました。
複数のデータベースを操作できる方法があったら再度検証してみたいと思います。