SQL Serverを使うのは、Azure SQL Databaseが初めてだったので知らなかったのですが、SQL Serverでは、データベースをまたいだクエリは、下記のように、データベースを指定することによって簡単に書けます。
SELECT * FROM [<db_name>].dbo.test_table
しかし、Azure SQL Databaseで同じことをすると、下記のようなエラーが出てできません。
Failed to execute query. Error: Reference to database and/or server name in '<db_name>.dbo.test_table' is not supported in this version of SQL Server.
Azure SQL Databaseでデータベースをまたいだクエリを書くには、「エラスティック データベース クエリ 」を使って、参照先のテーブルを、外部テーブルとして定義しておく必要があります。
docs.microsoft.com docs.microsoft.com
しかし、テーブル1個づつ定義を作らないといけないので、結構手間です…。
結論
Azure SQL Databaseでは、頻繁に参照するテーブルは、同じデータベースの中に置き、データベースを、安易にテーブル分類手段としては使用しない方が良さそうですね。
感想など
エラスティックプールを使えば大丈夫かなと思って試したのですがダメでした。
Azure SQL Databaseは、ポータル上のくくりは、[サーバー]->[データベース]という階層になっていますが、物理的なサーバーは「データベース」単位で別物のようです。
Azure SQL Databaseでは、データベースを切り替えるUSE
コマンドが使えないので、どうしてだろう?と思っていたのですが、データベース毎にサーバーが違うからなんですね。
USE (Transact-SQL) - SQL Server | Microsoft Learn
「Azure SQL Database マネージドインスタンス」ならできそうですね。でもこれって、Azure SQL Databaseと言うより、単にSQL ServerをインストールしたWindows PCのような気が…。