问题标签 [biml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
889 浏览

ssis - 提供的连接必须是 AstDbConnectionNode 类型

我一直在研究一个简单的 BIML 解决方案,以开始学习如何使用它。我不断收到一条错误消息:

对于此方法,提供的连接必须是 AstDbConnectionNode 类型。在 Varigence.Biml.Extensions.ExternalDataAccess.GetDatabaseSchema 中:第 0 行

我一直在寻找和尝试不同的解决方案,但还没有找到答案。所以,我转向这里的每个人。我需要另一双眼睛,这样我才能弄清楚我做错了什么。

我的第一个 BIML 文件在我的本地机器上设置了与 World Wide Importers 的连接。

第二个 BIML 文件是引发错误的原因

0 投票
1 回答
582 浏览

c# - BIML 和 C# SQL 连接和命令到 SSIS 问题

我的数据库中有 2 个表,其中一个名为 Sales.Salesperson,它是源数据库,目标数据库是 dbo.Salesperson。我制作了一个 BIML,它使用 C# 代码从源获取现有表的列表,然后将所有数据从源导入到目标,例如,我只有上面列出的 1 个表。在 C# 上,我使用 SQL 连接和 SQL 命令来获取所有表的表和架构(同样只有 1 个,所以它可以是动态的),

问题,因为我有一个句点来分隔模式和表,在我的 SQL 命令中,当我从 BIML 转到生成 SSIS 包时,当我尝试截断表时,它会从 SSIS 步骤 EXECUTESQL DirectInput 给我一条错误消息<#=表 #> 错误显示“DynamicDataLoad 包中的 Sales.SalesPerson 包含 SSIS 的无效字符 (/:[].=)。无效字符将替换为 _”,因此,我的 SSIS 包出现错误

这是下面的代码以提供帮助:

下面是 C# 部分,如果您查看 SQL 命令,我将带回 Schema,然后是一个名为“表”的列表中的表,它在上面的 BIML 中用于列出所有要转换为 SSIS 包的表,这用于BIML 部分称为截断,这是 BIML 中错误的来源。

0 投票
1 回答
3404 浏览

ssis - 如何在表达式生成器中使用 System::ErrorDescription 系统变量

我正在使用 BIML 创建 SSIS 包,包的一部分处理发生的错误。我正在使用一个执行 SQL 任务,它调用一个存储过程来记录数据库中的错误详细信息,并且存储过程需要一个参数@Comments来保存错误描述和其他一些自定义信息的信息。

我正在尝试创建一个变量Error_Details并使用表达式来构建@Comments参数的值。

问题是当我使用上面的代码创建变量时包创建失败,我理解 System::ErrorDescription 在表达式生成器中不可用,但是我在这里有什么选择。

如何使用仅在 BIML 代码中的某些特定上下文中可用的一些系统变量。

非常感谢您看我的问题。请提出解决方案。

0 投票
0 回答
27 浏览

biml - 使用 SSMS DB 中的数据(不是 METAdata)在 SSIS dtsx 创建中驱动 biml

我需要能够根据存储在 SSMS DB 表中的数据在 SSIS dtsx 的数据流中生成任务。基本上,我有 N(未知、可变)源和 M(未知、可变)目的地,并且我有一个包含 MxN 行的表 T0。每一行,使用一个位 B,指定我是否真的需要将数据从那个特定的源发送到那个特定的目的地。T0 存储在用于配置的基本数据库 DB0 中。

理想情况下,使用 BIML,我想为 B = 1 的 T0 的每一行编写一个具有简单数据流(OLEDB 源 -> OLEDB 目标)的 dtsx。这个 dtsx 生成必须由我在 T0 中找到的数据驱动。

在线我可以找到如何从数据库中读取元数据,但我找不到任何人谈论基本的“从数据库中读取数据”并在 BIML 中使用这些数据。我是否需要在 BIMLScript 的 C# 代码中处理数据库连接?如何在 c# 代码中使用/解决与 DB0 的连接?(通常我会在配置文件中有这个连接......在这种情况下,我需要从 C# 脚本中引用 connMgr)。

0 投票
2 回答
266 浏览

ssis - BIML 注释标签不匹配

我将表中的模式转储到包的标记注释中。

在用于创建主包的 BIML 中,我正在为每个模式创建一个序列容器并将包放入相应的容器中。至少这是我要求它做的。

当它运行时,我得到一个带有空序列容器的主包。我从包 foreach 中取出 where,它生成但将所有包放入每个容器中。我将 GetTag 放在包裹的名称中只是为了确保它正确地拾取它。

标签被放入包名中,但它周围有很多空间。

所以我猜测填充值是 RootNode.Packages.Where 与模式名称不匹配的原因。我不知道如何修剪空间。我尝试将 trim() 放在不同的地方,但 BIML 引擎抱怨它。通过在 BIML 中的实际注释前面取出制表符,我能够摆脱前导空格,但它仍然填充结尾。

关于为什么要填充标签的任何想法,或者我可能完全不在此处,而不是标签周围的空格。

0 投票
1 回答
333 浏览

biml - BIML 文件移动疑难解答

我正在尝试编写一个简单的文件移动循环,但我知道我遗漏了一些东西。1. 可能缺少遍历所有文件的变量,即文本,并且只移动文本文件,因此我需要一个变量,但不确定我将把它放在下面的代码中的什么位置。2. 我收到的错误消息是“没有为‘MoveFilesPackage.LoopF​​ilesMove.MoveToDestination’提供必需的属性‘源’……但我想我明白了?我检查了我的拼写和大小写……但仍然没有出现:( 让我知道我是否遗漏了其他任何内容以使其正常运行并将数据文件从一个目录移动到另一个目录:( 下面的 Biml 代码:

0 投票
1 回答
2219 浏览

ssis - Ole db 源上的 BIML 参数化查询

我正在使用 BIML 构建多个 SSIS 包,并且我必须在日期间隔之间从 OLE DB 源中检索数据。这是要生成包的xml:

这种结构通常可以工作,因为我已经尝试过了,但使用的是 ID(整数)而不是日期(字符串)。我在尝试生成包时收到的错误如下:

我知道我可以创建一个 ssis 变量并将查询中的日期连接为表达式,但我想坚持<DirectInput>使用<VariableInput>

附加信息

变量中的日期时间(对不起,我忘了提到它是日期时间,但我认为它没有太大变化)格式是正确的:yyyy-mm-dd hh:mm:ss。我很确定格式没有问题,因为我尝试创建一个变量作为表达式,像这样连接日期:<Variable Name="Query" DataType="String" EvaluateAsExpression="true">&quot;SELECT * FROM table WHERE col &gt; '&quot; + @[User::StartDate] + &quot;'&quot;</Variable>并且它有效。我忘了提到的一件事可能很重要,源 dbms 是一个 db2

0 投票
1 回答
459 浏览

mysql - BIML 创建错误的元数据

我有一个项目将数据从 MySQL 数据库移动到 SQL2012 中的数据库。现在没有什么花哨的,只是直接推送数据。我通过 ODBC 访问 MySQL 实例,而 SQL DB 是一个 OLE 连接。生成包时,ODBC 源和 OLE 目标之间存在元数据不匹配。(到目前为止,这就是数据流的全部内容)消息指出“列”无法在 unicode 和非 unicode 字符串类型之间转换。”

在源和目标之间的路径编辑器中检查元数据表明,问题源列被读取为长度为 255 且代码页为 1252 的 DT_STR。然而,在 MySQL 中,它们被整理为 utf8_general_ci,即 unicode。

目标 SQL 数据库表中的对应列是相同长度的 varchar。

如果我打开 OLE 目标并单击“确定”,元数据会刷新,并且在保存包后可以正常工作。这违背了使用 BIML 创建包的全部目的,并且需要永远打开 50 多个包来刷新元数据并保存。

我已经尝试了几件事而没有改变行为:

  • 在 unicode 和 ansi MySQL odbc 驱动程序之间切换。
  • 尝试制作目标列 nvarchar。但我必须进行数据转换转换才能完成这项工作。
  • 在 OLEDBDestination 的 ExternalTableOutput 元素中的 [] 中包含架构/表名称。
  • 更改了 SQL Native Client 版本。
  • 在从 MySQL 提取的源查询的末尾放置一个“COLLATE latin1_bin”语句。
  • 最初是在带有 BimlExpress 的 VS2015 中,并在带有 BimlExpress 的 SSDT 2012 中进行了尝试。(顺便说一句...由于缺少 Microsoft.DataWarehouse.Interfaces dll,必须在 2014 年安装 SSDT 才能让 BIML 在 SSDT2012 中编译)

任何想法都会受到欢迎,我对这个的想象几乎已经走到了尽头。

谢谢!

0 投票
2 回答
371 浏览

odbc - 如何防止 BIML Express 引用 ODBC 驱动程序

TL;博士

我想防止 BIML 在创建我的 dtsx 包时将我的 ODBC 驱动程序用双引号括起来。

更多信息

我有一个非常简单的 BIML 文件,如下所示,在BIML 代码头之后,它连接到复合信息服务器 (CIS)。我不认为数据源很重要,但我想我会包括它以防它与问题/问题相关。

CIS ODBC 驱动程序使用驱动程序名称安装Cisco Information Server 7.0

如下所示,我正确输入了驱动程序名称,但是当 BIML 生成 dtsx 包时,它会在名称周围加上引号,因此,对于这样的连接:

...我最终得到一个连接字符串,如下所示:

如果我删除花括号并使用这样的连接字符串:

...我仍然得到这样的连接字符串:

编辑只是为了清楚起见(因为原始帖子中缺少它),BIML编译器添加的额外引号意味着驱动程序无法识别并且执行生成的包会引发此错误:

执行 SQL 任务:获取连接“CIS”失败。连接可能未正确配置,或者您可能对此连接没有正确的权限。

我有一个可行的解决方案(更多的解决方法),方法是为 中的驱动程序创建一个重复的注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI删除非字母数字字符,然后在 BIML 中引用它。

但是,我想知道是否有办法阻止 BIML 编译器在我的 ODBC 驱动程序周围加上引号。

在此先感谢您的任何建议!

BIML 代码

0 投票
2 回答
1039 浏览

ssis - 为什么BIML ScriptTask会失败,直到我在VS中打开脚本并保存包

我有这个 BIML 脚本,它创建了一个主包和子包。子包中有一个 ScriptTask,它将父包变量的值映射到子包变量。当我在 SSIS(Visual Studio 2015,目标 Sql Server 2014)中生成包时,它们生成得很好。如果我运行主包,孩子会失败并出现以下错误:

当我在孩子中打开 ScriptTask,然后再次关闭它时,包很脏,所以我保存了它。之后,运行包正常工作。

这是BIML脚本:

我错过了什么?为什么在我手动打开代码窗口之前包会失败?提前感谢您的帮助,西蒙