sql - Job 的子查询返回超过 1 个值错误
问题描述
一旦 ssrs 订阅因任何原因失败,我已经创建了一个要执行的作业。
如果仅发生一次订阅失败,则此作业可以完美运行。上次我有 3 次失败。工作:显示此错误:
消息 512,级别 16,状态 1,第 5 行子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我试图用 IN 替换 = 但没有用,所以它可以除了多个值。
DECLARE @ScheduleId NVARCHAR (50)
SET
@ScheduleId = (
SELECT
rs.ScheduleID
FROM
ReportServer.dbo.Catalog c WITH(NOLOCK)
INNER JOIN ReportServer.dbo.Subscriptions sub WITH(NOLOCK) ON (c.ItemID = (sub.Report_OID))
INNER JOIN ReportServer.dbo.ReportSchedule rs WITH(NOLOCK) ON (
c.ItemID = (rs.ReportID)
AND sub.SubscriptionID IN (rs.SubscriptionID)
)
INNER JOIN ReportServer.dbo.Schedule sch WITH(NOLOCK) ON (rs.ScheduleID = (sch.ScheduleID))
INNER JOIN msdb.dbo.sysjobs sj WITH(NOLOCK) ON (cast(rs.ScheduleID as sysname) = (sj.name)) --sysname equivalent to nvarchar(128)
INNER JOIN msdb.dbo.sysjobschedules sjs WITH(NOLOCK) ON (sj.job_id = (sjs.job_id))
INNER JOIN msdb.dbo.sysschedules ss WITH(NOLOCK) ON (sjs.schedule_id = (ss.schedule_id))
WHERE
(
sub.LastStatus = 'Done: 1 processed of 1 total; 1 errors.'
OR sub.LastStatus LIKE '%Failure%'
)
)
你能帮忙吗
解决方案
改用这个。
DECLARE @ScheduleId NVARCHAR (50)
SET
@ScheduleId = (
SELECT
TOP 1 rs.ScheduleID
FROM
ReportServer.dbo.Catalog c WITH(NOLOCK)
INNER JOIN ReportServer.dbo.Subscriptions sub WITH(NOLOCK) ON (c.ItemID = (sub.Report_OID))
INNER JOIN ReportServer.dbo.ReportSchedule rs WITH(NOLOCK) ON (
c.ItemID = (rs.ReportID)
AND sub.SubscriptionID IN (rs.SubscriptionID)
)
INNER JOIN ReportServer.dbo.Schedule sch WITH(NOLOCK) ON (rs.ScheduleID = (sch.ScheduleID))
INNER JOIN msdb.dbo.sysjobs sj WITH(NOLOCK) ON (cast(rs.ScheduleID as sysname) = (sj.name)) --sysname equivalent to nvarchar(128)
INNER JOIN msdb.dbo.sysjobschedules sjs WITH(NOLOCK) ON (sj.job_id = (sjs.job_id))
INNER JOIN msdb.dbo.sysschedules ss WITH(NOLOCK) ON (sjs.schedule_id = (ss.schedule_id))
WHERE
(
sub.LastStatus = 'Done: 1 processed of 1 total; 1 errors.'
OR sub.LastStatus LIKE '%Failure%'
)
)
推荐阅读
- ms-access - 更新查询 - 更新到下一个日期的前一天
- r - CCA:绘制缺少约束变量的图?
- api - Slack Webhook 忽略了我的一些参数
- unit-testing - React 测试库:如何管理重复的测试代码
- javascript - 我的嵌套 for 循环正在输出重复项
- sql - 为什么 SQL Server 使用不同的键范围锁定 SELECT?
- python - 使用 python 创建无限的 Instagram 帐户
- windows - 如何在 Windows 对话框中绘制图标?
- c# - EF Core Sql 执行顺序需要改变
- css - 如何在 React 中使用带有样式组件的内联样式?