Ssis BIML数据流无法读取配置文件
摘要 配置文件查找可用于执行SQL任务,但无法用于数据流任务 问题 我有两个数据库:Ssis BIML数据流无法读取配置文件,ssis,dataflow,biml,Ssis,Dataflow,Biml,摘要 配置文件查找可用于执行SQL任务,但无法用于数据流任务 问题 我有两个数据库: 源(本地SQL Server数据库) 目标(Azure SQL数据库) 我有两个包,我想从BIML代码创建 1) 创建暂存(工作正常) 使用源数据库中的for each循环和元数据在目标数据库中创建表 2) 加载分段(不工作) 使用for each循环和数据流任务(从源到目标)加载目标数据库中创建的表 这两个包都需要使用我创建的包配置文件,该文件存储目标数据库(Azure数据库,使用SQL Server
- 使用源数据库中的for each循环和元数据在目标数据库中创建表
- 使用for each循环和数据流任务(从源到目标)加载目标数据库中创建的表
Could not execute Query on Connection Dest: SELECT * FROM stg.SalesTaxRate. Login failed for user ''.
我曾尝试使用包1)的BIML代码并添加一个数据流任务,这似乎引发了相同的错误-似乎在使用执行SQL任务时,它可以找到并使用配置文件没有问题,但在使用数据流任务时,它找不到
包1的脚本):
如果对象_ID('stg','U')不为空
升降台。;
创建表stg。
(
挑选*
从…起
配置文件:
<?xml version="1.0"?>
<DTSConfiguration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Source].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>"Data Source=YRK-L-101098;Provider=SQLNCLI11.1;Persist Security Info=true;Integrated Security=SSPI;Initial Catalog=AdventureWorks2016"</ConfiguredValue>
</Configuration> <Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=mpl.database.windows.net;User ID=*****;Initial Catalog=mpldb;Provider=SQLNCLI11.1;Persist Security Info=True;Auto Translate=False</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[Password]" ValueType="String">
<ConfiguredValue>******</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[UserName]" ValueType="String">
<ConfiguredValue>******</ConfiguredValue>
</Configuration>
</DTSConfiguration>
“数据源=YRK-L-101098;提供程序=SQLNCLI11.1;持久安全信息=true;集成安全性=SSPI;初始目录=AdventureWorks2016”
数据源=mpl.database.windows.net;用户ID=***;初始目录=mpldb;提供程序=SQLNCLI11.1;持久安全信息=True;自动转换=False
******
******
注意:“UserId”和“Password”的值在实际脚本中用正确的值填充。摘要
问题在于,在通过使用Biml(构建时功能)生成包来开发包时,您试图使用包配置(SSIS运行时功能) 发生了什么事?
可以这样想。如果要在开发过程中手动创建SSIS包,则必须通过指定用户名和密码连接到源数据库和目标数据库。如果不连接到数据库,SSIS将无法获取所需的元数据。一旦开发了包且所有元数据都已更新映射后,您可以使用包配置。当您使用包配置打开或执行包时,所有硬编码值都将替换为配置值。此值替换是SSIS运行时功能 现在,将其与使用Biml而不是手动创建SSIS包进行比较:生成包时,您希望Biml引擎从包配置文件中获取用户名和密码。由于这是SSIS运行时功能,Biml无法获取该数据,将使用Bim中指定的连接字符串lScript。由于这些连接字符串未指定用户名和密码,Biml将无法连接,并且用户“”的错误登录失败。(这类似于在SSIS中创建连接管理器而不提供用户名和密码,并且在单击“测试连接”时出错。) 但它适用于执行SQL任务?
它可能看起来像,但实际上不是。执行SQL任务基本上只是被忽略。在执行包之前,SSIS或Biml引擎不会检查或验证执行SQL任务中的SQL代码。您可以在其中键入任何内容,SSIS会很高兴,直到您尝试执行无效代码,此时它会给您一个错误。因为e此代码在开发过程中未经SSIS验证,在包生成过程中未经Biml验证。包成功生成,打开后,将应用包配置,并且不会看到任何错误 但是,OLE DB目标在开发过程中由SSI和Biml引擎进行验证。它们都需要连接到数据库以获取元数据。这就是为什么仅此文件会出错的原因 解决方案
包配置仅是SSIS运行时功能。您不能使用它们将连接字符串、用户名或密码传递给Biml引擎。您可以在BimlScript中硬编码连接字符串,也可以将连接字符串存储在外部元数据存储库中,但您需要向Biml引擎提供用户名和密码在包生成过程中使用Biml引擎。好问题-我会看看是否可以让Biml hivemind参与进来。可以尝试的一件事是用括号将目标外部表括起来
Table=“[stg].]”
我在这一过程中遇到过这样的情况mattered@billinkc感谢您的回复。这些表读起来很好-在创建包时未能使用配置文件更是一个问题。我总是很瘦
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ template language="C#" tier="2" #>
<#
string _source_con_string = @"Data Source=YRK-L-101098;Persist Security Info=true;Integrated Security=SSPI;Initial Catalog=AdventureWorks2016";
string _dest_con_string = @"Data Source=mpl.database.windows.net;Initial Catalog=mpldb;Provider=SQLNCLI11.1;Persist Security Info=True;Auto Translate=False";
string _table_name_sql = "select TABLE_SCHEMA , table_name from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE'";
DataTable _table_names = new DataTable();
SqlDataAdapter _table_name_da = new SqlDataAdapter(_table_name_sql, _source_con_string);
_table_name_da.Fill(_table_names);
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection Name="Source" ConnectionString="Data Source=YRK-L-101098;Provider=SQLNCLI11.1;Persist Security Info=true;Integrated Security=SSPI;Initial Catalog=AdventureWorks2016" />
<OleDbConnection Name="Dest" ConnectionString="Data Source=mpl.database.windows.net;Initial Catalog=mpldb;Provider=SQLNCLI11.1;Persist Security Info=True;Auto Translate=False" />
</Connections>
<Packages>
<Package Name="006_Load_Staging_Configuration" ConstraintMode="Linear">
<PackageConfigurations>
<PackageConfiguration Name="Configuration">
<ExternalFileInput ExternalFilePath="C:\VSRepo\BIML\Configurations\AzureConfigDF.dtsConfig"></ExternalFileInput>
</PackageConfiguration>
</PackageConfigurations>
<Tasks>
<Container Name="Load Staging Tables" ConstraintMode="Linear">
<Tasks>
<# foreach(DataRow _table in _table_names.Rows) { #>
<Dataflow Name="DFT-S_<#= _table["TABLE_NAME"] #>">
<Transformations>
<OleDbSource Name="SRC-<#= _table["TABLE_SCHEMA"] #>_<#= _table["TABLE_NAME"] #>" ConnectionName="Source">
<DirectInput>
SELECT *
FROM <#= _table["TABLE_SCHEMA"] #>.<#= _table["TABLE_NAME"] #>
</DirectInput>
</OleDbSource>
<OleDbDestination Name="DST-<#= _table["TABLE_SCHEMA"] #>_<#= _table["TABLE_NAME"] #>" ConnectionName="Dest">
<ExternalTableOutput Table="stg.<#= _table["TABLE_NAME"] #>"/>
</OleDbDestination>
</Transformations>
</Dataflow>
<# } #>
</Tasks>
</Container>
</Tasks>
</Package>
</Packages>
</Biml>
<?xml version="1.0"?>
<DTSConfiguration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Source].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>"Data Source=YRK-L-101098;Provider=SQLNCLI11.1;Persist Security Info=true;Integrated Security=SSPI;Initial Catalog=AdventureWorks2016"</ConfiguredValue>
</Configuration> <Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=mpl.database.windows.net;User ID=*****;Initial Catalog=mpldb;Provider=SQLNCLI11.1;Persist Security Info=True;Auto Translate=False</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[Password]" ValueType="String">
<ConfiguredValue>******</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Dest].Properties[UserName]" ValueType="String">
<ConfiguredValue>******</ConfiguredValue>
</Configuration>
</DTSConfiguration>