1. ホーム
  2. sql-server-2005

[解決済み] データベーススキーマが存在するかどうかを問い合わせるには?

2022-09-26 20:57:44

質問

ビルドプロセスの一環として、4 つの異なる環境にコードをデプロイする際に、データベース更新スクリプトを実行します。さらに、本番環境にリリースをドロップするまで、同じクエリが追加されることになるので があります。 を指定されたデータベース上で複数回実行できるようにする必要があります。 このように

IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]'))
BEGIN
  CREATE TABLE [Table]
  (...)
END

現在、デプロイ/ビルドスクリプトにcreate schemaステートメントがあります。 スキーマが存在するかどうか、どこに問い合わせればよいのでしょうか。

どのように解決するのですか?

あなたが探しているのは sys.schemas ?

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'jim')
BEGIN
EXEC('CREATE SCHEMA jim')
END

なお CREATE SCHEMA は独自のバッチで実行される必要があります ( 以下の回答 )