这就是我想要完成的:
在 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
但是,这似乎只是一个杂物,我正在寻找一种“适当”的方法。