我正在尝试远程执行SSIS软件包.该软件包位于SQL Server 2008实例上,我想从2005年服务器上的作业中调用它.我遇到的错误是: 软件包无法加载.这 步骤失败. 如果我从2008年到2008年,则没有错误.有什么想法吗? 解决方案 假设您正在尝试使用dtexec命令执行软件包,则问题是该软件包是在调用服务器上执行的,而不是存储的服务器. 自2005 SSIS服务无法执行2008软件包以来,步骤失败. 您需要在要运行的服务器上触发dtexec.最简单的方法可能是在启动软件包的2008服务器上设置SQL代理作业,并从2005服务器触发该作业(使用SP_STARTJOB或一些更复杂的触发机制). 其他解决方案 您正在运行的帐户是否在SQL 2005框上具有权限.您可以创建一个可以在其中运行工作的代理.
以下是关于 ssis 的编程技术问答
我有一个已部署到SQL Server 2008的SSIS软件包.此软件包在竞标中以及从存储软件包目录中的服务器中运行良好.一旦将此软件包与SQL作业联系起来,我就开始看到SSIS软件包中访问特定文件的权限问题.因此,通过我的研究,我发现使用代理帐户可能是解决我问题的方法.这些是我到目前为止所采取的步骤: 设置Active Directory用户帐户 在安全性 - 凭据 - 在步骤1中创建了与帐户绑定的凭据. 在SQL Server Agent -proxies -SSIS软件包执行下 - 创建了与上面凭据相关的代理,并选择了" SQL Server Integration Services Services Services Package"复选框. 在MSDB数据库上创建了一个带有" sqlagentoperatorrole"," sqlagentReaderrole"," sqlagentReaderrole"," sqlagentReaderrole"," sqlage
从2022年12月29日开始,我们的几个SSISDB包装开始花了两倍的时间才能完成ETL.这延迟了我们公司每日报告的开始. 没有任何错误的错误,并且日志中没有任何不同的错误.该公司已经进行了代码部署冻结了3周,所以我很确定不是那样. 服务器CPU在30%至60%之间波动,因此我认为这不是服务器资源问题.这种现象发生在各种ETL上.我研究了这些工作"挂"或"失控"的原因,但是我找不到可辨的解释. 您可以推荐调试步骤吗? SQL Server Management Studio2018. 解决方案 不幸的是,分辨率不是很令人满意.在研究了这个问题近一个月后,其中一个DB-Admins指出,服务器在近2.5个月内没有重新启动.因此,它重新启动,一切都恢复了正常.
为什么在生产代码中使用SELECT *被认为是不良实践? 是否有其他替代方法可以在生产中使用,或者我们需要单独选择表中的每一列? 解决方案 使用SELECT *至少在SSIS的背景下,出于某些原因是一个不良习惯. 选择所有列,如果您不需要全部,则是浪费内存,而内存是使SSIS快速运行(或不使用)的魔术. 选择所有列,如果您不需要全部,将阻止SQL Server使用索引更快地返回数据. SSIS是非常元数据驱动的.因此,如果您将SELECT *作为源,如果将列添加到表中,则您的源定义已更改,并且包裹可能会失败,因为元数据不再一致. 其他解决方案 [*]有效地选择了所有列.但是,由于选择所有列意味着获取大量数据,所以我想只选择您真正需要的列是更好的. 例如,您可能不需要获取所有ID列或时间戳或更新日期等.但是您需要获取产品描述或客户名称.但是即使那样,您也可能不需要每次获取. 其他解决方案 如果您确实需要您要进行的数据库调用中的每一列,则不应该
i具有一个数据流,其中包含一个oledb源(通过变量生成的语句),该数据流称为存储过程. 在SSM中,需要8分钟,但包装本身需要更长的时间才能完成. 我已经将验证(delayValidation)设置为True,因此它仍然在运行时进行. IVE还将数据流量组件以及连接管理器中的元数据设置验证. 数据流在它们上也已读取. 我不确定在哪里看,如何更快地进行此次运行的任何帮助将是很棒的. 解决方案 我怀疑真正的问题在于您的存储过程中,但是我还提供了一些基本的SSIS项目来尝试解决您的问题: 确保OLE DB源的连接经理都设置了todelayvalidation(= true). 确保将ValidateExternalMetadata设置为false defaultbuffermaxrows和defaultbuffersize以对应于表的行大小 掉落并重新创建您的目标组件是SSIS 确保您的存储过程已在 上设置ANSI_NULLS 确保您的Sproc中的SQL达到索引
在我的应用程序中,用户可以指定文件的格式.基于用户输入,我们动态创建SSIS软件包. ..eate-ssis.html 动态创建的SSIS软件包用于处理用户的文件. 我们想评估pentaho-kettle的此要求. Kettle可以根据用户的输入动态创建ETL作业吗? 是可能的吗? 如果不是pentaho,是否有任何Java ETL工具可以动态创建ETL作业? 解决方案 我不认识别人,但这在水壶中很棘手,但是人们以各种方式做到了. 最好的选择是(全新的)注入步骤,它使您可以使用元数据进行真正聪明的事情 - 但它仅适用于一些基本步骤.我认为它会做您想做的事,请在这里阅读Matt Casters(PDI Creator and God)博客: http://www.ibridge.be/?s = injectunport.stement.s = injectmon&submit = go 如果那不起作用;然后,您的其他选项是沿通用字段名称路线(
我知道这有点主观,但是我正在研究以下情况: 我需要从SQL Server数据库中的数据自动产生许多文档.数据库上将有一个MVC3应用程序,以允许数据输入等.(可能)一个" go"按钮生成文档. 需要有一些有关如何创建,命名和存储这些文档的业务逻辑(例如," parent"文档获取一个名称并在一个文件夹中转到一个文件夹," child"文档获取计算名称并进入子文件夹中. 只要输出可以在en-us和ar-qa(rtl text) 中,文档可以是PDF或DOC(X)(X)(X)(甚至两者都) 我知道SSR,Crystal Reports,VSTO," MANUAL" PDF中有许多选项,代码中的"手动" PDF,Word Mail Merge等...而且,如果有任何用途,我们已经有一个html到PDF工具了? 有人对如何解决这个问题以及"最好的"(最务实的)方法有任何现实世界的建议?我需要在服务器上安装和配置的"额外功能越少)越好 - 开发越快(一如既往!!) 到
我有一些由密码保护的SSIS软件包(显然是它们的保护级别,显然是EncryptallWithPassword),该开发人员离开了公司,无法再联系,并且尝试打开它们会产生以下错误,因为密码可以使用密码提供: 错误加载'package.dtsx':无法删除软件包保护 带有错误0xc0014037"软件包是 使用密码加密.这 密码未指定,或者未指定 正确.".这发生在 cpackage :: loadfromxml方法. 有什么办法可以打开这些软件包?我可以访问最初用于创建这些软件包的管理员帐户,并使用同一个人对其他软件包进行加密,但使用了我知道的其他密码. 我已经与当地的Microsoft代表联系了有关该问题的代表,到目前为止,他们只将我链接到a 解决方案 我认为如果使用EncryptallWithPassword,整个软件包已加密,并且没有密码,则无法恢复软件包.可以尝试使用密码猜测或字典攻击,希望开发人员使用弱密码. 如果它是加密敏感的WithPassword-
我有一个带有许多列的数据集(日志文件);其中之一是Other-Data(见下文),它是一个无序的字符串,需要对其进行解析以根据u value(u1,u2,u3等...)创建新列 OTHER-DATA u1=EUR;u2=sss:Checkout-Step4:Orderacknowledgement;u3=DE:de:hom;u11=1;u12=302338533;u13=SVE1511C5E;u14=575.67 任何人可以帮忙吗? 解决方案 一种方法是添加脚本转换组件,将另一个数据使用作为输入行,用c#或vb.net对其进行解析,然后以同步模式将其输出到预定义的输出中.这只有在您可以提前准备U1的U1时才能起作用.这里说明了非常类似的问题:
我的来源是SQL Server,我正在使用SSIS将数据导出到S3存储桶中,但是现在我的要求是将文件发送为Parquet文件FEMATE. 你们可以给出一些如何实现这一目标的线索吗? 谢谢 ven 解决方案 对于人们绊倒这个答案,除非您找到自定义组件或编写一些.NET代码来执行此操作,否则您将无法将数据从SQL Server导出到Parquet文件. 如果您要出口到Azure,您将有两个选择: 使用灵活的文件目标 component(Azure功能包的一部分),该文件将导出到Azure Blob或Data Lake Gen2存储中的parquet文件中. 利用polybase,SQL Server功能.它让您通过外部表特征.但是,该文件必须托管在提到的位置在这里.不幸的是S3不是一个选择. 如果是我,我将把数据移至S3作为CSV文件,然后使用athena将CSV文件转换为PQRQUET.这里有一篇精美的文章,讲述了雅典娜的作品: net-net
我需要将子包中变量的值拉到父套件.我无法做到这一点. 我可以使用软件包配置将变量从父母到子设置,但我找不到将子价值带入父的方法.我尝试使用用来设置父母从子中的父母设置值的相同过程,但它行不通. 另一个主题中发布的可能解决方案无法解决问题,它可能是不可能的.该帖子是从2013年开始的,许多事情发生了变化,我想看看现在是否可以(而不将价值保存到外部表格或类似的东西)). 解决方案 这个子软件包被用于许多斑点,其中许多不会让我试图设置的父变量(在父变量中不存在).因此,上面的帖子中的标准脚本将无效.我希望有一个简单的返回变量值. 使用上面的帖子作为起点,我更新了C#代码以检查我要在父套件中设置的变量是否首先存在(因为它并非总是存在),然后如果这样设置了. 以下是我提出的代码 // have to do this FIRST so you can access variable without passing it into the scri
如何通过使用执行软件包任务将值动态传递到子包变量? 我需要同时从另一个软件包(父母)调用包裹(子).在每个通话中,我都需要将不同的值传递给儿童包变量 我尝试在执行软件包任务中使用参数绑定,但是有些我犯了错误.它的价值不如预期.仅通过空 eg: 一个父母和一个孩子.三个不同的任务要经营同一孩子.我想通过3个不同的变量从父母传递到一个孩子变量 预先感谢 解决方案 要将变量从父套件传递到子软件包,您可以使用软件包配置. 在您的 parent软件包中,创建要传递该值的变量.让我们称之为 varparent .现在,使用执行软件包任务引用子包.您不需要任何参数绑定. 在您的子包中,创建将从父套件接收值的变量 - varchild .右键单击控制流中的空白空间,然后选择属性.滚动到MISC下的配置.然后单击带有三个点的按钮. 检查"启用软件包配置",然后单击"添加".包配置向导打开.点击下一步. 在配置类型中,选择 parent package
我找到了显示参数的catalog.object_parameters视图,但除了创建环境之外,我宁愿避免的,我想找到一种在项目级上复制"配置"对话框的方法程序调用.我似乎找不到适合账单的"目录"存储的程序. 有人破裂了这个坚果吗?如何在部署时设置项目级参数(不是执行时间)? 解决方案 我正在寻找一种更快的方法来做我的自我 简而看起来就像它更新旧的SSIS_CONFIGS表.然后,我编写了一个电源外壳脚本,该脚本重新配置参数值,即对于每个环境等.在我的情况下,我的开发项目正在查看某个模式,当prod中的其他位置时,它在其他位置,而在开发人员中,我限制了可执行文件的数量,但是在prod中我让他们拥有它.这很容易作为powershell中的变量设置,然后在集合配置中创建更改SQL脚本(SQLCMD)脚本也可以很好地工作 简单地您可以使用称为 的存储的Proc [SSIS].[catalog].[set_object_parameter_value] 您需要知道
我试图使用OLE DB命令在SSIS中进行此更新: UPDATE TABLE_A SET COLUMN_C = CONCAT(?,' ',?) FROM TABLE_A INNER JOIN TABLE_B ON TABLE_A.ID = TABLE_B.ID 但是当我尝试映射参数时,我会收到此消息: "由于单个表达式包含两个未型参数,因此无法推导参数类型" 我不知道我是否在此查询中做错了什么,还是在一个句子中不可能使用多个参数. 我正在使用VS 2010 解决方案 参数与SQL Server 2012和以后的 绑定 SQL Server 2012及以后更改了SQL解析器或优化器,以使用更严格的方法来确定未级别的参数输入类型. 这会导致SQL语句,例如" where col1> =? +?".失败的错误,例如mx.odbc.error.programmingerror :('42000',11503," [Microsoft] [SQL
我创建了一个SSIS项目,认为它将在项目部署模式下部署. 我的很多软件包都有2个参数(称为P_OdsTbl和P_SrcEtl),每当我使用执行程序包任务时,我都会将子参数绑定到父参数. 此后,我发现该项目将用于软件包部署模式,这意味着我需要将参数更改为变量(V_OdsTbl和V_SrcEtl),并使用可变配置设置其值. 我有很多引用包装中的这两个参数,并且全部浏览它们都可以手动更改它们既耗时又不安全(我可能会错过一些参考文献). 是否有一种方法可以通过项目搜索所有参考,或者更好?用引用新变量替换它们? 解决方案 正如@taballeman提到的,您可以使用文本编辑器并在.dtsx文件中替换文本,因为它们是基于XML的文件. 此外,我将建议使用有关更多信息,请检查以下链接: 如何查找和替换线( s)在多个文件中使用记事本++? 在多个文件中替换单词 其他解决方案 您可以使用文本编辑器搜索并替换.dtsx文件中的文本.
是否有一种方法可以使用用户定义的变量来定义SSIS OLE DB连接的连接字符串? 1)我最初将其设置为使用软件包参数. 2)我使用SQL存储的Proc中使用XP_CMDShell从文件执行SSIS包,但发现仅读取软件包参数. 我有一个错误..."更改变量失败的值,因为它是一个参数变量.参数变量仅读取" 3)因此看来我需要使用变量...但是,我看不到一种用于连接字符串变量的方法.当我将"参数化"选项用于连接时,它只会给我选择一个参数而不是变量的选项. 有什么想法吗?谢谢! 解决方案 我敢肯定,从评论中,您将获得很多建议,但是您问您如何将变量用作连接字符串,以回答该部分.这很容易, 添加软件包变量(右键单击"控制空间"上的控制流,选择变量将为您带来可以添加一个的地方) ) 选择连接管理器,然后转到属性(我使用右键单击属性) 单击表达式,然后...按钮 在属性中选择" ConnectionString",然后将您的表达式设置为变量或您想要的
我是这个网络的新手.希望我能找到这个问题的答案. 我有一个SSIS项目,其中有多个使用项目参数的软件包.我正在尝试更新项目参数,例如@periodstart:2014-05-31.我找不到动态写入项目参数的方法. 我正在使用4.0框架中的Visual Studio 2010.请任何人阐明这一点吗?! 亲切的问候 bal 解决方案 项目参数仅读取.您所追求的是根据项目参数分配变量,然后读取变量.变量和参数的概述在这里: http://social.technet.microsoft.com/wiki/wiki/contents/articles/22194.use-ssis-ssis-variobles-and-parameters-and-parameters-in-a-script-task-script-task.aspx > 例如,您可以将脚本任务添加到控制流中,然后在项目参数中读取,将readwrite变量分配到脚本任务,然后使用此变量.
我在ODBC源数据流任务中有一个SQL命令,需要采用参数,但是添加它们的选项不存在. 我尝试将数据库与ODBC提供商一起添加为ADO.NET连接,但也没有可用的参数.还尝试过作为OLEDB连接,但没有提供ODBC的提供商. 设置了所需的变量,我只是无法将它们添加为参数. 所以我想知道的是: 如果有一种方法可以将参数添加到ODBC源中的SQL命令 我可以使用ODBC的OLEDB提供商吗? 我可以在查询中直接访问包装变量吗?那会让我开放SQL注入吗?这样. "SELECT * FROM MyTable WHERE [id] = " + @[User::id] 编辑: 这是改变的表达式 "SELECT Name, PhoneNum, Address FROM PERSON
WHERE Name = '" + @[User::Name] + "'
AND PhoneNum = '" + @[User::PhoneNum] + "'" 它在源中生
我正在尝试创建一个从表查询数据的SSIS软件包,并在另一行数据库中调用一个存储过程. 在我的旧DTS软件包中,我正在这样做: EXEC myStoredProcedure ?, ?, ? ...然后我映射了参数.但是,在SSIS中,我不知道如何使这项工作. 我有一个数据流任务,该任务首先运行数据的查询.它将数据传递给OLE DB目标.我将数据访问模式设置为" SQL命令",但是当我尝试放入上面的SQL时,当它解析SQL时会得到"无效的参数计数".我无法进入映射屏幕.有什么想法吗? 解决方案 在数据流中,OLE DB Command可用于在数据流中执行每行的SQL语句 - ( msdn文档) 另外,您可以将源结果设置存储在数据类型对象的变量中,并在控制流中使用Foreach Loop容器(示例在这里). 其他解决方案 您需要使用执行SQL任务.在SQLStatement部分中,您可以添加代码以执行存储过程. 为了传递参数,请使用?语法并指定