Tag: ssis

在自定义SSIS组件中找不到SetDataTypeProperties的方法

我正在尝试构建一个简单的自定义SSIS组件,它查看单个输入列并validation它,根据每行的值创建bool类型的输出列。 我已经成功构建了一个更简单的组件,它接受一个值并对其进行转换:这不需要摆弄输出列。 在这个例子中,我需要接受一个字符串并输出一个布尔值,组件需要知道它输出一个布尔值,所以我可以将值输入条件分割。 我正在努力添加输出列。 基于Microsoft的代码示例 ,我已经这样做了: public override DTSValidationStatus Validate() { IDTSOutput100 output = ComponentMetaData.OutputCollection[0]; IDTSOutputColumn100 outputcol = output.OutputColumnCollection.New(); outputcol.Name = “IsValid”; outputcol.SetDataTypeProperties(DataType.DT_BOOL, 0, 0, 0, 0); return DTSValidationStatus.VS_ISVALID; } 然后我尝试在ProcessInput步骤中填充它: public override void ProcessInput(int inputID, PipelineBuffer buffer) { while (buffer.NextRow()) { string str = buffer.GetString(0); buffer.SetBoolean(0, IsValid(str)); // validation code not relevant } } […]

在SSIS 2012中动态设置脚本任务代码

在我的应用程序中,动态创建脚本任务。 在SQL Server 2008的SSIS实现中,以下方法工作正常。 private void SetSourceCode(ScriptTask scriptTask, string code, string codeName) { string fileName = “ScriptMain.vb”; string language = “VisualBasic”; string proj = “.vbproj”; scriptTask.ScriptLanguage = VSTAScriptLanguages.GetDisplayName(language); scriptTask.ScriptingEngine.InitNewScript(language, scriptTask.ScriptProjectName, proj); scriptTask.ScriptingEngine.ShowDesigner(false); scriptTask.ScriptingEngine.AddCodeFile(fileName, code); if (!scriptTask.ScriptingEngine.Build()) throw new Exception(“Failed to build vb script code: ” + codeName); scriptTask.ScriptingEngine.SaveScriptToStorage(); if (!scriptTask.ScriptingEngine.CloseIDE(false)) { throw new Exception(“Unable to […]

在SSIS中的Script Task中连接到SQL数据库

在SSIS中的脚本任务内部,我需要调用SQL数据库。 我有一个连接字符串是在我将数据库添加到数据源文件夹时创建的,但是现在我不确定如何在C#代码中引用它。 我知道如何在ASP网站的代码中执行此操作,但似乎SSIS应该有更直接的方法。 编辑 这行代码实际上最终会抛出exception: sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction); 它写道:“无法将’System._ComObject’类型的COM对象强制转换为类类型’System.Data.SqlClient.SqlConection。’”

如何将一个变量中的一个参数中的多个值传递给SSIS的OLEDB源

我试图将多个值作为一个参数传递。 例如:我需要在(1,2,3,4,5)中获取employeeID , employeeID字段数据类型是Integer。 查询: select * from emp where employeeID = ? 我创建一个值为1的变量’v_employeeID’并传递OLEDB Source中的参数映射。 我可以传递一个值,但我不能传递多个值。

在SQL Server表中转储SSIS USER变量名称和值

目的:获取SSIS包中的所有用户变量,并在SQL Server 2008表中写入变量名称及其值。 我尝试了什么:我有一个小的“脚本任务 ”工作来显示变量名称及其值。 该脚本如下。 using System; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; namespace ST_81ec2398155247148a7dad513f3be99d.csproj { [System.AddIn.AddIn(“ScriptMain”, Version = “1.0”, Publisher = “”, Description = “”)] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { #region VSTA generated code enum ScriptResults { Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success, Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure }; #endregion public void Main() { Microsoft.SqlServer.Dts.Runtime.Application app […]

从.PDF文件中提取数据

我需要从.PDF文件中提取数据并将其加载到SQL 2008.任何人都可以告诉我如何继续?

如何在SSIS脚本任务中循环遍历通用对象

我有一个从SQL进程传递到脚本任务的通用对象。 该对象本质上是一个数据表,但为了从sql进程获取完整的结果集,我必须将它存储在一个通用对象中。 所以如果我有: Object A = Dts.Variables[0]; 然后,我将如何提取并操纵其值。 基本上我想做的是: Object A = Dts.Variables[0]; strin x = A.Column[0].value.tostring(); 但这显然不起作用。

SSIS脚本任务获取文件名并存储到SSIS对象变量

我正在尝试构建一个将用于标准化文件系统归档过程的SSIS包。 基本上,我将能够将信息添加到配置表,然后使用此表来存档指定文件夹中的某些文件。 我的问题是很多文件都有动态命名,所以我需要获取所有文件的列表,然后查询以确定我应该触摸哪些文件。 在尝试编写包的一部分时,不是C#/ VB程序员会导致一些问题,它会抓取指定网络目录中的所有文件,然后将这些文件名反馈回SSIS对象变量。 我有一个字符串变量’User :: SourceNetworkFolderName’,它将包含我想要读取所有文件的文件夹的UNC位置。 我想将所有这些文件名(带扩展名)传递回名为’User :: SourceFilesInTheDirectory’的SSIS对象变量。 一旦我将文件名列表放入对象变量中,我就会将它们循环到SQL表中。 有没有人对如何获取从我的变量目录到我的SSIS对象变量的所有文件名列表有任何具体建议? 先感谢您! 编辑:这是我更新的代码: using System; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; using System.IO; using System.Collections.Generic; using System.Data.SqlClient; namespace ST_f5e4ae71f14d40d8811af21fa2a9a622.csproj { [System.AddIn.AddIn(“ScriptMain”, Version = “1.0”, Publisher = “”, Description = “”)] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { #region VSTA generated code enum ScriptResults […]

“脚本任务中的”调用目标引发了“运行时错误exception”

我有一个带有脚本任务的SSIS包,当我尝试在本地系统中运行它时出现以下错误。 它适用于我的同事和生产。 但是,我无法在本地运行它来进行测试。 我在main方法中保留了一个调试点,但它永远不会到达,我在进入main方法之前得到了错误。 我正在使用VS 2010,.Net framework 4.5。 脚本任务确实编译。 我得到以下消息SSIS包“.. \ Test.dtsx”开始。 错误:测试时为0x1:调用目标引发了exception。 任务失败:测试SSIS包“.. \ Test.dtsx”完成:成功。 程序'[2552] DtsDebugHost.exe:DTS’已退出代码0(0x0)。 以下是代码: public void Main() { try { LogMessages(“Update Bug package execution started at :: ” + DateTime.Now.ToLongTimeString()); LogMessages(“Loading package configuration values to local variables.”); strDBConn = Dts.Variables[“User::DBConnection”] != null ? Dts.Variables[“User::DBConnection”].Value.ToString() : string.Empty; strTPCUrl = Dts.Variables[“User::TPCUrl”] != […]

SSIS脚本任务,用于检查文件是否存在于文件夹中

我想检查SSIS中特定文件夹中是否存在文件。 我怎么能做到这一点?