データベースを SQL Server 2000 から SQL Server 2008 R2 に移行していて、スキーマに問題が発生しました。SELECT * FROM blah
SQL Server 2000 では、オブジェクト名の前に (たとえばではなく)所有者/スキーマを付けなかった場合でも、dbo.blah
SQL Server はそれを認識します。これは、オブジェクトが非 dbo 所有者にある場合でも機能しました。
SQL Server 2005 では、これは次のように変更されました: http://blogs.msdn.com/b/mssqlisv/archive/2007/03/23/upgrading-to-sql-server-2005-and-default-schema-setting .aspx .
ユーザーの既定のスキーマを dbo ではなく xyz にすることで、2 つのスキーマを持つデータベースを回避できます。私が遭遇する問題は、3 番目のスキーマ (abc.blah) があるデータベースにあります。ユーザーをデフォルトの xyz にすると、問題なく dbo にアクセスできますが、スキーマ プレフィックスなしで abc から何かを選択しようとすると、無効なオブジェクト エラーが発生します (abc.blah は正常に動作します)。
もちろん、最初からこのようにコーディングするべきではありませんでしたが、それは別の戦いです。アクセス許可に問題がないことを確認しました。
私は他の人がこれに遭遇したと確信しています。コードを修正する以外の回避策を見つけた人はいますか?