无法锁定变量$ Project :: Databases

问题描述 投票:1回答:1

我有一个名为Databases的Project参数,它是数据类型为Project的SSIS中的String参数。变量本身包含一个硬编码的XML文档,即:

<dbs>
    <data>
      <db>database1</db>
      <store>store1</store>
    </data>
    <data>
      <db>database2</db>
      <store>store2</store>
    </data>
</dbs>

我在SSIS的foreach loop中使用它,我在这里迭代这些数据库和相应的商店。

我的foreach循环配置为:

DocumentSourceType: Variable
DocumentSource: $Project::Databases
EnumerationType: ElementCollection
OuterXPathStringSourceType: DirectInput
OuterXPathString: /dbs/*
InnerElementType: NodeText
InnerXPathStringSourceType: DirectInput
InnerXPathString: *

然后我使用Variable Mappings使索引0对应于变量User::DatabaseName和索引1以对应User::StoreKey

这在我从SSIS执行包时有效。我使用这些值的SQL语句变量给出了正确的输出等。

问题是,当我尝试使用SQL Agent Job执行此操作时,我收到错误:

无法锁定变量“$ Project :: Databases”以进行读访问,错误0xC0010001“无法找到变量”。当在程序包执行期间尝试从容器上的变量集合检索变量时,会发生这种情况,并且变量不存在。变量名称可能已更改或未创建变量

但是应该创建变量 - 毕竟它只是一个硬编码变量。

当我用google搜索这个问题时,可能的解决方案是:

变量不是string类型(在我的例子中)

要么

从中执行SQL代理作业的用户没有正确的权限(在我的情况下,它由我读取数据的数据库上的sysadmin和msdb和SSISDB运行)。

variables ssis sql-agent-job
1个回答
1
投票

当使用项目部署模型部署程序包时,SSIS将仅使用项目参数。如果您正在使用包部署模型,则应更改包以使用配置而不是Project参数。

© www.soinside.com 2019 - 2024. All rights reserved.