テストのために、SQL 2008データベースを別のサーバーにコピーしました。ログインする一般的なユーザーは、特定のスキーマのいくつかのオブジェクトを使用します。それがユーザーfoo
とスキーマだとしましょうbar
。
foo
のデフォルトのスキーマはbar
、インスタンスレベルとデータベースレベルの両方にあります。ただし、foo
ログインするとbar
、完全修飾名を使用しないとスキーマ内のオブジェクトを見つけることができません。
ここでデフォルトのスキーマが機能しないのはなぜですか?
テストのために、SQL 2008データベースを別のサーバーにコピーしました。ログインする一般的なユーザーは、特定のスキーマのいくつかのオブジェクトを使用します。それがユーザーfoo
とスキーマだとしましょうbar
。
foo
のデフォルトのスキーマはbar
、インスタンスレベルとデータベースレベルの両方にあります。ただし、foo
ログインするとbar
、完全修飾名を使用しないとスキーマ内のオブジェクトを見つけることができません。
ここでデフォルトのスキーマが機能しないのはなぜですか?
回答:
新しいサーバーのデフォルトのスキーマはdboであると想定しています。スキーマがデータベースとともにコピーされていない場合。
解決策ではありませんが、msdnの記事を参照すると、おそらくこれが役立つかもしれません。http://msdn.microsoft.com/en-us/library/dd283095.aspx
foo
新しいサーバーのデフォルトのスキーマを設定しました。bar
インスタンスユーザーレベルとデータベースユーザーレベルの両方で設定されます。