はじめに:そのエラー、ウェアハウスが「無い」とは限りません
Snowsightでクエリを実行しようとしたら、いきなり 「Warehouse ‘XXX’ does not exist or not authorized.」 と赤いエラーが出てきて固まってしまった…そんな経験はありませんか?日本語にすると「ウェアハウスが存在しないか、権限がありません」という意味のエラーですが、実は 本当にウェアハウスが無いケースは少数派 で、ほとんどは「あるのに見えていない」状態なんです。
この記事では、SQL初心者の方でも迷わないように、このエラーの原因を3つに絞って解説します。

そもそも「ウェアハウス」って?
ウェアハウス (Virtual Warehouse) は、Snowflakeでクエリを動かすための「計算エンジン」です。データそのものはストレージに置かれていて、そのデータを処理するときに必要なCPUとメモリを提供してくれるのがウェアハウスだと考えてください。レストランで言えば、データは食材、ウェアハウスは料理人といったところでしょうか。
クエリを実行するときは必ず「どのウェアハウスを使うか」が決まっている必要があり、それが指定されていなかったり、指定したものに触れなかったりすると、冒頭のエラーが出るわけです。
原因1: ウェアハウス名のスペルミス・存在しない
もっとも単純で多いのが、単純な打ち間違いです。まずは本当に存在するかを確認しましょう。
-- アカウント内に存在するウェアハウス一覧を表示
SHOW WAREHOUSES;
このコマンドで一覧に出てこなければ、その名前のウェアハウスは存在しません。CREATE していないか、あるいは COMPUTE_WH を COMUPTE_WH のように打ち間違えているかもしれません。命名ルールが社内で決まっているなら、Snowflake命名規則ベストプラクティス|ウェアハウス・ユーザー・ロール も合わせて見直してみてください。
原因2: USAGE権限が無い
ウェアハウス自体は存在しても、いま使っているロールに USAGE権限 が無いと「見えない」扱いになり、同じエラーが返ってきます。Snowflakeはセキュリティのため、「権限が無いオブジェクトは存在しない」と回答するのです。
権限を確認するには、次のSQLを実行します。
-- 現在のロールが持つ権限を確認
SHOW GRANTS TO ROLE my_role;
-- ウェアハウスに紐づく権限を確認
SHOW GRANTS ON WAREHOUSE my_wh;
USAGEが無ければ、ACCOUNTADMINなど権限を付与できるロールから付け足します。
GRANT USAGE ON WAREHOUSE my_wh TO ROLE my_role;
テーブルが見えない場合の「Object does not exist or not authorized」も仕組みは同じです。詳しくは Object does not exist or not authorized エラーの正体 を参照してください。
原因3: ロールが切り替わっていない
USAGEが付いているのにまだエラーが出る…そんなときは、現在のセッションで 権限を持つロールに切り替わっていない 可能性が高いです。Snowsightの右上のロール表示が想定したものになっているか、SQLで確認しましょう。
SELECT CURRENT_ROLE(), CURRENT_WAREHOUSE();
-- 切り替え
USE ROLE my_role;
USE WAREHOUSE my_wh;
権限まわりが複雑になってきた場合は、Insufficient privileges to operate on の原因と解決手順 もチェックすると理解が深まります。

SnowsightのUIから直す手順
SQLが面倒なら、Snowsight右上の「Worksheet」コンテキストから次のように直せます。
- 右上の「Role」をクリックして、USAGE権限を持つロールを選択
- 続けて隣の「Warehouse」をクリックして、使いたいウェアハウスを選択
- 選択後にクエリを再実行
これだけでだいたいのケースは解消します。
つまずきがちな注意点
- 引用符の罠:
"my_wh"のようにダブルクォートで囲むと、大文字小文字がそのまま扱われます。作成時に小文字で作っていなければマッチしません。 - セッションのデフォルト: ユーザーに
DEFAULT_WAREHOUSEが設定されていない状態で接続すると、ウェアハウス未指定で同じエラーになります。ALTER USER ... SET DEFAULT_WAREHOUSE = ...で設定しておくと安心です。 - サスペンド中でもOK: ウェアハウスが停止中(SUSPENDED)でもエラーにはなりません。クエリ実行時に自動で起動します。
まとめ
「Warehouse does not exist or not authorized」は、存在しない / USAGE権限が無い / ロールが違う の3パターンが原因のほとんどです。慌てずに SHOW WAREHOUSES と SHOW GRANTS、そして CURRENT_ROLE() の3つを確認すれば、ほぼ確実に解決できます。ウェアハウスのコストが気になる方は、Snowflakeウェアハウス使用状況の可視化とコスト最適化入門 もあわせて読んでみてください。
参考リンク
- 仮想ウェアハウスの概要 – Snowflake Documentation
- USE WAREHOUSE – Snowflake Documentation
- GRANT <privileges> – Snowflake Documentation
関連記事
- Object does not exist or not authorized エラーの正体 – テーブルが見えないときの兄弟エラー。考え方は同じです。
- Insufficient privileges to operate on の原因と解決手順 – 権限不足エラー全般の対処法。
- Snowflakeウェアハウス使用状況の可視化とコスト最適化入門 – 解決した後は無駄遣いも防ぎましょう。
- Snowflake命名規則ベストプラクティス – スペルミスを減らす運用ルールに。


