Я использую таблицу метаданных для генерации пакета ssis, циклически перебирая таблицу метаданных и генерируя усеченные операторы, загружая данные и затем объединяя данные.В то время как я пытаюсь загрузить значения в операторе слияния, я получаю следующую ошибку.
Ошибка 20 FlowFramework, Версия = 5.0.63501.0, Культура = нейтральная, PublicKeyToken = 015f370a62f9a1a3.Не удалось разрешить ссылку на Table.PK_Table в свойстве TargetConstraint.'' является недействительным.Укажите правильное имя области.Свойство TargetConstraint.C: \ Users \ ansoe74 \ Documents \ visual studio 2010 \ projects \ 760_2_0_biml \ 760_2_0_biml \ BimlScript.biml 0 0
Имеющийся у меня скрипт biml
<# String FileConnection ="SELECT Name,CodePage,RowDelimiter,ColumnNamesInFirstDataRow,IsUnicode,FlatFileType,TextQualifer,TableName,TempTableName,TableConstraintName FROM dbo.FlatFileMaster";
#>
<Connections>
<OleDbConnection Name="OLEDB_Staging" ConnectionString="Data Source=local;Initial Catalog=TEST_DB;Provider=SQLNCLI11.1;Integrated Security=SSPI;"></OleDbConnection>
<#
DataTable fileConnections =ExternalDataAccess.GetDataTable(connString,FileConnection);
foreach(DataRow fileConnection in fileConnections.Rows)
{
#>
<FlatFileConnection Name="<#=fileConnection[0]#>" FileFormat="<#=fileConnection[0]#>" FilePath="C:\Users\ansoe74\Documents\Test\BIML_Files\Test\<#=fileConnection[0]#>.csv" CreateInProject="false"/>
<#
}
#>
</Connections>
<FileFormats>
<#
DataTable files =ExternalDataAccess.GetDataTable(connString,FileConnection);
foreach(DataRow file in files.Rows)
{
String FileConnectionName = file[0].ToString();
String FileColumns = "SELECT FlatFileName,ColumnName,Delimiter,ColumnType,OutputColumnWidth,DataPrecision,DataScale,DataType,CodePage,TextQualified FROM dbo.FlatFileColumnDetails Where FlatFileName=\'" + FileConnectionName + "\'";
#>
<FlatFileFormat Name="<#=file[0]#>" CodePage="<#=file[1]#>" HeaderRowDelimiter="LF" RowDelimiter="<#=file[2]#>" ColumnNamesInFirstDataRow="<#=file[3]#>" IsUnicode="<#=file[4]#>" FlatFileType="<#=file[5]#>" TextQualifer="<#=file[6]#>">
<Columns>
<#
DataTable columns = ExternalDataAccess.GetDataTable(connString,FileColumns);
foreach(DataRow column in columns.Rows)
{
#>
<Column Name="<#=column[1]#>" Delimiter="<#=column[2]#>" ColumnType="<#=column[3]#>" InputLength="0" Length="<#=column[4]#>" Precision="<#=column[5]#>" Scale="<#=column[6]#>" DataType="<#=column[7]#>" CodePage="<#=column[8]#>" TextQualified="<#=column[9]#>"/>
<#
}
#>
</Columns>
</FlatFileFormat>
<#
}
#>
</FileFormats>
<Tasks>
<#
DataTable DFT =ExternalDataAccess.GetDataTable(connString,FileConnection);
foreach(DataRow SourceFile in DFT.Rows)
{
#>
<ExecuteSQL Name="Truncate <#=SourceFile[8]#>" ConnectionName="OLEDB_Staging" BypassPrepare="false">
<DirectInput>Truncate Table <#=SourceFile[8]#>; </DirectInput>
</ExecuteSQL>
<Dataflow Name="<#=SourceFile[0]#>">
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="Truncate <#=SourceFile[8]#>.Output"/>
</Inputs>
</PrecedenceConstraints>
<Transformations>
<FlatFileSource ConnectionName="<#=SourceFile[0]#>" Name="<#=SourceFile[0]#>" RetainNulls="true" />
<DerivedColumns Name="Derived Column">
<Columns>
<Column Name="SUBMISSION_ID" DataType="Int32">0</Column>
</Columns>
</DerivedColumns>
<OleDbDestination ConnectionName="OLEDB_Staging" Name="OLEDB <#=SourceFile[0]#>" KeepNulls="true">
<ExternalTableOutput Table="<#=SourceFile[8]#>"></ExternalTableOutput>
</OleDbDestination>
</Transformations>
</Dataflow>
<Merge Name="Merge <#=SourceFile[7]#>" UnspecifiedColumnDefaultUsageType="CompareUpdateInsert" TargetConnectionName="OLEDB_Staging" TargetConstraintName="<#=SourceFile[7]#>.<#=SourceFile[9]#>">
<ExternalTableSource Table="<#=SourceFile[8]#>"/>
</Merge>
<#
}
#>
</Tasks>
</Package>
Объединение должно иметь возможность обновлять и вставлять данные на основе данных, уже присутствующих в таблице dest.