[解決済み] SQL Server - SQLスクリプトの実行を停止または中断する
2022-03-15 06:40:41
質問
SQLサーバーのSQLスクリプトの実行を、"break"や"exit"コマンドのようにすぐに停止する方法はありませんか?
挿入を開始する前に、いくつかの検証とルックアップを行うスクリプトがありますが、検証やルックアップのいずれかに失敗した場合に停止させたいのです。
どのように解決するのですか?
その レイザーラー メソッド
raiserror('Oh no a fatal error', 20, -1) with log
これは接続を終了させ、残りのスクリプトの実行を停止させます。
重要度レベル20以上と
WITH LOG
オプションが必要です。
これは、例えばGOステートメントでも機能します。
print 'hi'
go
raiserror('Oh no a fatal error', 20, -1) with log
go
print 'ho'
が出力されます。
hi
Msg 2745, Level 16, State 2, Line 1
Process ID 51 has raised user error 50000, severity 20. SQL Server is terminating this process.
Msg 50000, Level 20, State 1, Line 1
Oh no a fatal error
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
ho'が印刷されないことに注意してください。
CAVEATS
- これは管理者('sysadmin'ロール)としてログインしている場合にのみ機能し、またデータベース接続もないままになります。
- 管理者としてログインしていない場合、RAISEERROR() の呼び出し自体が失敗します。 を実行し、スクリプトの実行を継続します。 .
- sqlcmd.exeで起動した場合、終了コード2745が報告されます。
noexecメソッド
GOステートメントで動作するもう一つの方法は
set noexec on
. これにより、スクリプトの残りの部分がスキップされます。これは接続を終了させるわけではありません。
noexec
を再度オフにしてから、コマンドを実行します。
例
print 'hi'
go
print 'Fatal error, script will not continue!'
set noexec on
print 'ho'
go
-- last line of the script
set noexec off -- Turn execution back on; only needed in SSMS, so as to be able
-- to run this script again in the same session.
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】PowerShellスクリプトを実行する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] SQLサーバーで行を列に効率的に変換する