Questions tagged «ssis»

SQL Server Integration Services,这是Microsoft销售的ETL工具,自SQL Server 2005起与SQL Server版本捆绑在一起。

1
进行大容量插入时,SSDT Schema Compare不起作用
我正在一个大型ETL和DW项目中工作,在该项目中我们将TFS /源代码控制与SSIS和SSDT一起使用。 今天,我发现,当SSIS包对数据库表执行批量插入时,无法对该数据库执行SSDT架构比较。这很不幸,因为我们的某些软件包需要很长时间才能完成。我们希望使用“模式比较”功能来检测对数据库结构的更改,以便将其保存在我们的SSDT项目中,以进行数据库的版本控制。 仔细研究一下,我发现SSDT中的Schema Compare函数执行一个SQL脚本,该脚本OBJECTPROPERTY()在数据库的表上调用系统函数。特别是在我的情况下,OBJECTPROPERTY(<object_id>, N'IsEncrypted')当<object_id>引用当前正在批量插入的表时,对的任何调用似乎都被阻止了。 在Visual Studio中,SSDT架构比较会在一段时间后简单地超时,并声称未检测到差异。 SSDT中是否有解决此问题的方法,还是应该尝试提交MS Connect错误报告? 或者,由于BULK INSERT来自SSIS包,是否有某种方法可以在不锁定OBJECTPROPERTY表调用的情况下进行此插入?编辑:在SSIS OLE DB目标中,我们可以删除“锁定表”中的复选标记,该标记如其所愿,但这在某些情况下可能会损害性能。我对允许SSDT架构比较执行其工作的解决方案更感兴趣,即使某些对象被锁定。
11 sql-server  ssis  ssdt 

1
无法在BIDS中使用模糊查找
我的一个同事在BIDS上遇到了问题。他正在执行简单的模糊查找,并且仅针对两行进行查找(出于测试目的)。奇怪的是,当他尝试执行命令行提示符时,提示消失,然后消失,然后程序包挂起。 所以我让他把包裹寄给我,决定自己运行它,发现确实发生了同样的事情? 从本质上说,它将永远坐着。没有错误消息或任何东西。它给我的最后一条信息是这个。 [SSIS.Pipeline] Information: Execute phase is beginning. 现在,最好将它放在Superuser之类的东西上,因为我对问题所在有预感。我们的计算机被锁定到令人沮丧的程度。安装不当和软件无法正常运行时,我遇到了几个问题。 如果您对正在发生的事情或如何解决有任何想法,请告诉我。 更新:尝试安装此补丁无济于事。不能在32位或64位或Admin下工作。 也跟随输出,最后是这个。 SSIS package "Package1 (1) (1).dtsx" finished: Canceled.
11 ssis 

3
错误:“要在sql服务器数据工具之外运行ssis软件包,必须安装Integration Services或更高版本的[发送成功的电子邮件]。”
注意,此标题的标题是该用户专有的逐字错误消息。该错误消息说明了dtexec应用程序中的错误,该错误将用户变量替换为错误消息字符串。在这种情况下,标准消息Standard E dition将替换为send successful email。 “标准”错误消息为: 说明:要在Business Intelligence Development Studio外部运行SSIS程序包,必须安装Integration Services的Standard Edition或更高版本。 版本SSIS2012。软件包最初是2005版本。打包在文件系统上。 主机1上的DB引擎/代理,主机2上的SSIS。 从主机2执行将成功运行。从主持人1执行将在问题主题中给出错误。看到了这篇文章,但是在主机1上安装了引擎和代理。有人看到过吗?搜索精确错误时,Google不会返回任何结果(主题行正确,错误消息中的措词不正确)。 谢谢!

2
为了最大程度地提高数据库性能,应在通过SSIS将大量数据加载到SQL Server 2008之后运行哪些命令
我写了一个SSIS包,将测试数据加载到一个空数据库中。一些表非常大(约7亿行)。SSIS软件包完成后,是否应该运行任何命令(作为学徒DBA!)以最大化数据库的性能? 例如,我执行了EXEC sp_updatestats但是它报告没有索引需要更新。 一旦加载了大量数据,是否有一系列事情要做?或者SQL Server 2008会为您完成所有这些工作吗?

1
从运行在本地服务帐户上的SQL Server运行域用户拥有的SSIS包
我想运行一个包含传输SQL Server对象任务的SSIS包。涉及的服务器在同一域中,但是SQL Server服务在本地服务帐户上运行。因此环境如下所示: 域 服务器1 在本地帐户上运行的SQL Server 在文件系统上:SSIS包 在SQL Server代理中:作业 服务器2 在本地帐户上运行的SQL Server 为了能够登录到两台服务器,我创建了一个域帐户用作服务帐户。当我使用该域帐户登录到Server 1,然后从文件系统执行该程序包时,每个步骤都会成功。但是,当我尝试将作业添加到SQL Server时,遇到以下问题之一: 情况1.职位所有者:本地帐户;运行SSIS步骤作为域帐户的代理。当我将作业所有者设置为本地帐户,但将作业作为域帐户的代理运行时,作业本身将成功执行,但是程序包会抛出如下错误 执行失败,出现以下错误:“目录'LocalApplicationData'不存在。”。 可以通过在服务器1上为域用户创建具有管理员权限的登录名来解决此错误,但这显然不是理想的解决方案。将帐户添加到SQL Server代理/ DTS组之一也不起作用。 情况2.作业所有者:域帐户;运行SSIS步骤作为域帐户的代理。当我同时为该域帐户设置作业所有者和“以用户身份运行”时,该作业将完全无法启动,并出现以下错误: 无法确定作业的所有者(域\域用户)Job name是否具有服务器访问权限(原因:无法获取有关Windows NT组/用户“域\域用户”的信息,错误代码0x5。[SQLSTATE 42000](错误15404)) 。 我相信最后一个错误是因为SQL Server在本地帐户上运行,并且therfor无法查看哪些权限域帐户具有该权限。 什么是使作业正常运行的正确方法?情况2对我来说比较干净,但是似乎不可能,因为SQL Server在本地帐户上运行。情况1也可以,但是不会在我的SQL Server上授予域用户管理权限。 更新: @JonSeigel和@Brownstone先生: 这似乎是问题的原因是由于缺少权限。但是,该错误是关于不存在的“ LocalApplicationData”-为每个帐户生成的文件夹之一。我已经使用运行包的凭据登录了服务器(从而创建了配置文件目录),并尝试了配置文件目录的几种权限组合。即使手动授予该特定目录上的几乎所有权限,我也会遇到上述错误。 在进行更多研究时,我遇到了一个论坛线程,网址为http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441,这非常相似-尽管也没有解决方案。
10 sql-server  ssis 

2
Tablock提示触发死锁
我使用最少的日志记录,通过两个并行运行的Execute SQL Tasks和以下形式的SQL将两个数据集插入到空堆表中。 INSERT INTO Table (TABLOCK) SELECT FROM ... 作业暂停后,其中一个SQL任务成为死锁受害者。下面是死锁图的XML输出。 有人可以解释幕后发生的事情吗? <resource-list> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process9609dc8" mode="Sch-S"/> <owner id="process9609dc8" mode="IX"/> </owner-list> <waiter-list> <waiter id="process5e13048" mode="X" requestType="convert"/> </waiter-list> </objectlock> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process5e13048" mode="Sch-S"/> …

1
如何授予连接到SSIS的特权?
尝试使用dtexec.exe运行SSIS包时,出现以下错误消息: Could not load package "D:\Filename.dtsx" because of error 0xC00160AE. Description: Connecting to the Integration Services service on the computer "" failed with the following error: "Access is denied." By default, only administrators have access to the Integration Services service. On Windows Vista and later, the process must be running …

1
SSIS 2008程序包配置被忽略
与2008年相比,与2005年(当我在命令行上指定/ ConfigFile something.dtsConfig)相比,程序包配置发生了变化,程序包中定义的变量将保留其设计时值,而不是使用config文件中的设置。 我不太确定我是否了解如何获取要使用的外部配置文件。我读过的文章说只有设置的设计时配置会覆盖外部文件的负载。这是否意味着我可以将变量更改为空白字符串,然后将其覆盖?我无法完全删除变量!整数呢? 我看过一些文章提到使用软件包中的软件包配置关闭。 我可以使用SSIS包编辑器或XML编辑器来更改包中的配置文件路径,然后它将使用该文件的设置“ last”(无论使用外部/ ConfigFile选项如何),但是我不想成为更换包装。我想要一个带有Test.dtsConfig和Production.dtsConfig的程序包,并且能够在不更改程序包的情况下来回交换。 现在推荐的方法是什么?

3
数据仓库设计:组合的日期时间维度与单独的日期和时间维度和时区
我们刚刚开始为新的数据仓库设计,我们正在尝试设计日期和时间维度的工作方式。我们需要能够支持多个时区(可能至少是GMT,IST,PST和EST)。最初,我们以为我们可以将日期时间维度的组合范围缩小到15分钟左右,这样一来,事实表中就有一个键,而所有受支持时区的所有不同日期时间数据都在一个维度表中。(即日期键,GMT日期,GMT时间,IST日期,IST时间等) Kimball建议将日期维度与日期时间维度分开,以防止表格过大(数据仓库工具包第240页),听起来不错,但这意味着我们在每个时区的事实表中都有两个键我们需要支持(一个代表日期,另一个代表一天中的时间)。 由于我在这方面经验不足,所以我希望有人知道两种方法之间的权衡,即性能与所有不同时区密钥的管理。也许还有其他方法,我已经看到有人谈论每个时区在事实表中有单独的行,但是如果您的事实表有数百万行,那么您需要将其四倍以添加时区,这似乎是一个问题。 如果我们进行15分钟的粒化,那么我们的日期时间维度表中每年将有131,400(24 * 15 * 365)行,这听起来听起来并不可怕,但是直到我们测试了一些之后,我们才能确定原型查询。在事实表中具有单独的时区键的另一个问题是查询必须根据所需的时区将维度表连接到其他列,也许这是SSAS为您解决的事情,我不确定。 感谢您的任何想法,-Matt

2
SSIS脚本组件-如何修改Output0Buffer
我有一个脚本组件,该组件接受来自SQL Azure数据库表的记录。然后,脚本调用Web服务,该服务返回失败记录和成功记录的数量。 对于所有记录,我想添加“成功”或“失败”的“状态”字段,这将从脚本组件获取输出。 然后,将这些输出记录到文本文件中。 问题:由于Web服务调用仅在执行后发生,因此我无法为每个输入记录添加状态。 我尝试了这个,但仍然行不通: public override void Input0_ProcessInputRow(Input0Buffer Row) { listOfData.Add(new ClockData { TimeClockID=Row.TimeClockID, PersonID=Row.EmployeeCode, LocationCode=Row.ClockInServiceContextID, ClockInDateTime=Row.ClockInDateTime, ClockOutDateTime=Row.ClockOutDateTime }); } public override void CreateNewOutputRows() { MessageBox.Show("Test CreateNewOutputRows"); MessageBox.Show(listOfData.Count.ToString()); foreach (var item in listOfData) { Output0Buffer.AddRow(); Output0Buffer.EmployeeCode = item.PersonID; MessageBox.Show(item.PersonID); } }
10 sql-server  ssis 

4
如何在SSIS中更改脚本任务版本?
我在VS2015的SSIS项目中添加了脚本任务。当我部署到SQL Server 2016时,我收到一条错误消息,说明该version 15.0脚本不受支持。 这在哪里version 15 come from?在阅读有关Stack Overflow的其他类似问题时,我看到您可以将项目的目标版本设置为SQL Server 2012,这就是我所做的(最终部署目标是SQL Server 2012)。 我也尝试删除并重新创建脚本任务。并且在脚本的信息中,它说它正在使用C#的V10。 我该如何解决? 脚本任务:错误:从XML加载脚本任务时发生异常:System.Exception:脚本任务“” ST_a1ad9dc5972c42b68c12a13155f10b6d“”使用的是此发行版本的Integration Services不支持的15.0版脚本。要运行程序包,请使用脚本任务创建新的VSTA脚本。在大多数情况下,当您在%SQL_PRODUCT_SHORT_NAME%Integration Services中打开SQL Server Integration Services程序包时,脚本会自动转换为使用受支持的版本。在Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj,IDTSInfoEvents事件)“ 我还在SSDT 2012中打开了该项目,并使用了其他名称进行了重建。同样的错误。似乎必须有一个未被删除的引用或其他内容。 此问题的解决方案(/programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014)均无效。 查看脚本所在包中的XML,我可以轻松地找到该任务,并且在任何地方都没有引用版本15。 ==========编辑 将项目复制到托管数据库的计算机上,打开VS2015并从那里进行部署后,该包将执行。 然后,当回到我的机器并在那里构建时,事实并非如此。 这是错误吗?或者我是在做些愚蠢的事情,期望构建产生与使用VS中的向导相同的部署向导... 我有SQL Server 2016(13.0.4411.0),ssisdb具有架构版本(13.0.1601.5)。 我使用的是在Visual Studio 2015中创建的集成服务包。脚本组件具有以下路径:C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstax不允许我通过集成服务目录执行该包(由于Zach遇到的消息)。但是,它似乎可以让我通过文件系统(使用SQL Agent)执行它。不确定该程序是否正常运行,将在软件包完成后对其进行更新。
10 ssis 

2
SSIS数据流数据访问模式-“表或视图”与快速加载的意义何在?
使用SQL Server商业智能开发工作室,我做了很多平面文件到OLE DB目标数据流,以将数据导入到我的SQL Server表中。在OLE DB目标编辑器中的“数据访问模式”下,它默认为“表或视图”,而不是“表或视图-快速加载”。有什么区别; 我唯一可以看出的区别是,快速负载可以更快地传输数据。
9 ssis 

2
如何解决SSIS Excel Connection Manager错误0xC0209303?
我创建了一个SSIS包,该包将excel文件导入到SQL Server表中。 当我在计算机上本地运行SSIS程序包时,它运行没有问题,但是当我在将要安排该程序包的服务器上运行它时,出现以下错误(从文本文件中,我输出错误到使用SSIS日志记录)。 经过研究,我能找到的唯一建议是将Run64BitRuntime属性设置为false,我确实做到了,但还是没有运气。我怀疑这是导致我的错误的原因,因为该错误未指定任何有关64位的内容(就像我发现的文章一样)。 我还认为服务器可能没有适当的Excel驱动程序,但我也不认为是这种情况,因为通常错误消息会说明未注册驱动程序。 我目前没有访问服务器的远程权限。我只能将程序包上传到文件夹,然后由应用程序运行,因此我只能看到的错误消息是我创建的文本错误日志中的内容。 错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“ Envision”的AcquireConnection方法调用失败,错误代码为0xC0209303。在此之前可能会发布错误消息,并提供有关AcquireConnection方法调用失败原因的更多信息。 “ Envision”是我的excel连接管理器的名称。 我使用表达式填充Excel文件路径和连接字符串。 连接字符串表达式如下所示: “” Provider = Microsoft.ACE.OLEDB.12.0; Data Source =“ + @ [User :: SourceFilePath] +”;扩展属性= \“ EXCEL 12.0 XML; HDR = YES \”;“ SSIS Pacakge由Windows用户名/帐户执行。我认为这可能是一个Web服务帐户。(BDS_sprtIIS) 关于如何解决仅在我的本地计算机上有效但不能在将软件包部署到的实际服务器上工作的软件包问题,是否有人有任何解决方案或建议? 我在另一个论坛上找到了以下答案,这可能是引起我问题的原因吗?他们基本上是说Excel连接管理器由于某种原因试图访问用户的temp文件夹,如果它无权访问该文件夹,则它将失败: https://social.msdn.microsoft.com/Forums/sqlserver/zh-CN/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection-经理失败?论坛= sqlintegrationservices 我也注意到Microsoft.JET.OLEDB.4.0驱动程序将尝试读取已登录用户的配置文件下的temp目录。 。 ...我们使用较低级别的域帐户运行SQL代理,并使用代理帐户运行SSIS包。您是正确的,因为Procmon也为我确认了这一点。我将代理帐户权限授予了配置文件的临时目录(C:\ Documents and Settings \ SQLAgentDomainAccount \ Local Settings …

1
将存储过程结果关联到SSIS变量
我试图将存储过程中的值放入SSIS变量中,然后进行测试以查看如果我添加了一个表达式,两个SSIS任务是否可以工作。因此,例如,我尝试使用此存储过程: 也许我什至在设置SSIS变量属性时都完全错了,因为我也不知道我是否对存储的proc值导入SSIS变量的方法是否正确。如果您还需要其他任何屏幕截图,请告诉我。 这是任务示例: 这是优先约束编辑器的屏幕截图: 这是第一个任务的属性: 我希望它根据这种情况前进(或失败)。但是,当我对其进行测试时,该过程无论从第一个任务流向第二个任务,仅向我显示第一个任务的“ 100%完成”,而与它是否检查此表达式是否正确无关。我该怎么办?出了什么问题?我在SSIS中确实有一个名为“ orderCount”的变量,用于从存储的proc中获取值。

2
SQL Server的最大内存包括SSIS?
我在以下服务器上安装了2个sql服务器实例以及SSIS。 请注意,RAM的容量接近384 GB 这是我已应用于两个实例的最大和最小内存设置。我假设两个实例都将使用相同数量的资源,如果确实如此,那么184,320 MB(180 GB)是设置内存的一个很好的起点吗? 我将为SSIS分配多少内存?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.