这听起来类似于不使用新环境变量配置的 SSIS 包 SQL 作业,但是当我在我的开发 SQL Server 机器上进行测试时,我不必重新启动 SQL Server 代理。老实说,如果这就是防止某人用这个产品“伤害”自己所需要的,那么。. . 这是绝对不能接受的。
更新:现在,跟进关于SSIS 包 SQL 作业的评论,不使用新的环境变量配置可能是一种解决方案。
它不是。我重新启动了代理。没有骰子。作业仍然成功运行。我重新启动了 SQL Server 代理和服务。再次,没有失败。
这听起来也与SSIS 2012 SQL Agent Job ConnectionString vs InitialCatalog外围相关,但我自 2005 年以来一直在使用 SSIS,从未见过从它的各个组件配置连接字符串。我们总是将连接字符串放在 .config 文件中并取得了成功。
我有一个我无法解决的问题。老实说,这似乎是一个错误,但我不想这么冒昧。
我在测试环境中的 Windows Server 2012 R2 上运行 SQL Server 2012 SP3。
在我的开发盒上,我正在运行 VS2012 + SSDT-BI。
我用一个 SSIS 2012 项目构建了一个解决方案。
- 我将 SSIS 项目部署到我的测试 SQL Server 框。
- 我配置了一个新环境(我们称之为 Fred)。
- 我将变量添加到 Fred 环境中。
- 其中一些变量是连接字符串。
- 我回到 SSISDB 树中的 SSIS 项目。右键单击并配置。
- 我将项目的所有连接管理器的连接字符串属性(仅)设置为从 Fred 的连接字符串变量之一进行配置。
现在我拥有一切,至少在连接方面,可以从我的 Fred 环境中进行配置。
- 我创建了一个 SQL Server 代理作业(SSIS 类型)来执行一个包。
- 我选中该框以说从环境配置 .\Fred
- 我完成了作业配置。
- 我右键单击该作业并选择“在步骤开始作业”。. 。
作业执行。耶!一切正常。包都执行。(每个人都在跳欢乐的舞蹈!)
现在来了我无法解决的部分。
作为系统测试的一部分(我是 2012+ 项目部署模型的新手和谨慎),我更改了存储在我的 Fred 环境变量之一中的连接字符串值。此连接字符串是我的 SSIS 项目的连接管理器的连接字符串(我对此进行了三次检查)配置为使用的连接字符串。
连接字符串现在无效/不完整,现在如果我要执行相同的 SQL 代理作业,则期望执行的包应该失败(验证),对吗?
好吧,猜猜是什么。作业成功。(欢乐之舞停止。)包都执行成功。我检查了我的测试数据库环境,并且行已添加到数据库中的表中,其连接字符串完成错误(在 Fred 环境中)。
所以,现在我想嗯,好吧,也许我错过了一些东西。我返回并删除包含无效/不完整连接字符串的环境变量。
我再次执行作业。工作成功。呃,什么?
- 我启动了我的 SQL Server 2012 开发实例(顺便说一下,RTM,不是 SP3)
- 我部署了一个具有相同项目连接管理器/环境配置映射的测试项目
- 我经历了同样的步骤。. .
但是现在这一次,作业按预期失败了。注意:不需要/不需要重新启动 SQL Server 代理。
- 我回到我的测试箱
- 我右键单击 SQL 代理 (SSIS) 作业
- 我转到属性>步骤(页面)>编辑(第一步。只有一个),现在我看到了警告:
参数“SomeOtherSSISProjectParameter”配置为使用环境变量,但未选择环境变量。选中“环境”复选框并指定要使用的环境,或为参数指定文字值。(Microsoft.DataTransformationServices.DTSExecUI.Controls)
呃,什么!?
- 首先,此作业步骤中的环境复选框已被选中。
- 其次,此参数与 Fred enviro 无关或映射。我更改然后删除的变量。
- 第三,环境变量值不为空或为空。它还在那里,从我第一次将它添加到环境中时就没有受到影响。
(此时,我认为 SSISDB 已损坏。)
我点击通过了警告。现在我在 SSIS 包 SQL Server 代理配置页面中,当我尝试单击确定(不进行任何更改)时,我现在收到与孤立环境配置相关的预期错误消息。
连接管理器“MySSISProjConnManagerName”的属性“ConnectionString”配置为从名为“MyFredEnviroVariableName”的环境变量接收值,但在环境“.\Fred”中没有名为“MyFredEnviroVariableName”的环境变量。选择不同的环境,或为属性使用文字值。(Microsoft.DataTransformationServices.DTSExecUI.Controls)
所以好消息是我无法单击“确定”来保存这个损坏的作业/步骤,但坏消息是我可以单击“取消”,我可以右键单击该作业并选择“在步骤开始作业”。. 。并在绝对不应该的情况下成功完成。
是的,我重新启动了代理。是的,我重新启动到服务器。
我在 SQL Server 2012 的开发实例 (RTM) 上测试了该场景,但无法重现它。其他人可以吗?更好的是,有解决方案吗?SP4?
对此的任何帮助将不胜感激。就我而言,这是在 2012 年使用项目部署模型的障碍。