SQL Management Studio の begin/end ブロックで "create schema" を使用できないのはなぜですか?
2023-09-12 12:44:12
質問
このデータベースのすべてのユーザーとスキーマを作成するスクリプトを作成しましたが、CREATE ステートメントを IF EXISTS チェックでラップすると、CREATE SCHEMA 呼び出しを BEGIN/END ブロックで実行できないことがわかりました。それは無効な構文であると文句を言われます。しかし、私はそれ自体でコマンドを実行することができます。コードのサンプルは以下のとおりです。SQL Server 2008 と Management Studio R2 を使用しています。なぜ、これは無効な構文なのでしょうか?
--DROP SCHEMA [acme]
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme'))
BEGIN
CREATE SCHEMA [acme] AUTHORIZATION [dbo]
END
どのように解決するのですか?
スキーマの作成は、バッチ内の唯一のステートメントでなければなりません。それを回避する一つの方法は次のようなものです。
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme'))
BEGIN
EXEC ('CREATE SCHEMA [acme] AUTHORIZATION [dbo]')
END
関連
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL Management Studioで別のポート番号を指定するにはどうすればよいですか?
-
[解決済み] SQL Server Management Studio & Transact SQLにおけるGOの使用方法とは?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する
-
[解決済み】SQL Server Management Studio 2012で主キーを自動インクリメントする。
-
[解決済み】SQL Server Management Studioでテーブル編集後に変更を保存する。
-
[解決済み] TSQL - BEGIN ... ENDブロックの中でGOを使用する方法。ENDブロックの中でGOを使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
plsql-stored-procedure ORA-06550 エラー処理
-
MHAクラスタエラーサマリーの構築
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] ある列の最大値を持つ行を取得する
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?