SQL Server スキーマ(Schema)指定無しの時のオブジェクトの検索順
調べる機会があったので。
On Default Schemas and "Search Paths" - SQL Server Science
sql server - SQL default schema resolution in Stored Procedure - Stack Overflow
Dude, where's my table? - Bob Beauchemin
幾つか記事はありますが、足りなかったり、古かったりしたので 2019 の環境で検証かねて試しました。
試した感じ概ね Dude, where's my table? - Bob Beauchemin に書いてある順番通りでした。
ただ 最初に sys を探すってのが謎。 2005 の時はそうだったんかな?
use [master] go create database [hoge] go use [hoge] go select * from sys.tables select * from tables -- これで sys.tables を見つけてくれない go
何か読み間違えてる?
検証クエリは gist に貼ってます。
ログイン作るの面倒なので包含データベース使ってます。
包含データベースへの包含ユーザー アクセス - SQL Server | Microsoft Docs
包含データベース許可してない場合は↓しといてください。
sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO