首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能锁定变量$Project::Databases

未能锁定变量$Project::Databases
EN

Stack Overflow用户
提问于 2017-12-20 09:59:37
回答 1查看 287关注 0票数 1

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

代码语言:javascript
复制
<dbs>
    <data>
      <db>database1</db>
      <store>store1</store>
    </data>
    <data>
      <db>database2</db>
      <store>store2</store>
    </data>
</dbs>

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

我的foreach循环被配置为:

代码语言:javascript
复制
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”找不到变量“。当尝试在执行包时从容器上的变量集合中检索变量时,就会发生这种情况,而变量并不存在。变量名可能已经更改,或者变量未被创建。

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

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

变量不是字符串类型(在我的例子中是这样的)。

执行SQL代理作业的用户没有正确的权限(在我的示例中,它是由我将数据读取到的数据库上的sysadmin运行的,以及msdb和SSISDB)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-20 22:09:45

只有在使用项目部署模型部署包时,SSIS才会使用项目参数。如果使用的是包部署模型,则应该将包更改为使用配置而不是项目参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47903302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档