创建一个包,它将遍历我们不同环境(DEV、UAT、PROD)中的所有服务器。我们使用服务帐户,一个服务帐户用于 DEV 和 UAT,另一个用于 PROD。我正在使用 ForEach 循环容器/变量来设置连接字符串。
问题:当循环中的数据流尝试连接到 PROD 服务器时,它们会失败,因为它们正在使用显然无权访问 PROD 的 DEV/UAT 服务帐户,这很好。问题是这会杀死循环。通常我只会在数据流上放置一个事件处理程序并设置事件处理程序的系统变量 Propagate:OnError = False 以便错误不会冒泡到循环并杀死它。好吧,这是行不通的,因为数据流中的 OLE DB 连接在验证期间失败(在程序包运行时),并且显然 Propagate = False 设置仅在执行任务期间发生错误时才防止错误冒泡,而不是任务的确认。
我可以在包括包本身在内的所有内容上设置MaximumErrorCount = 0,但这有点笨拙,并且无论遇到什么错误,包总是会报告它运行成功。
运行 SQL Server 2008-R2
链接到一篇文章,如果有人不熟悉它,如何使用传播设置不终止循环。