これは私が達成しようとしていることです:
SQL Server エージェント ジョブの最初のステップで、データベースが読み取り専用かどうかを確認します。この場合 - ジョブを終了します。
そこで、ジョブ ステップの [詳細プロパティ] を使用し、[失敗時カチオン:] に対して [ジョブ レポートの成功を終了する] を選択することにしました。
しかし、RAISERROR() を使用せずに T-SQL スクリプトを失敗させるにはどうすればよいでしょうか。RAISERROR() を使用したくない理由は、使用するには sysadmin サーバー ロールのメンバーである必要があるためです。
機能するかなり醜いアプローチを見つけました-存在しないテーブルから何かを選択すると、スクリプトは次のようになります。
declare @DBIsRO int;
SET @DBIsRO= (SELECT is_read_only
FROM sys.databases
WHERE name = 'test')
IF @DBIsRO=1
select * from dd -- table dd doesn't exist in current database
ただし、これは単なるおかしなことのようで、「適切な」アプローチを探しています。