Я решил эту проблему, переключив свойства проекта служб SSIS на целевой SQL Server 2016, по умолчанию он был нацелен на SQL Server 2017.
Похоже, что это ошибка в продукте Varigence, так как это сообщение на форуме подтверждает, что другие испытывают проблему. Нет никаких обновлений от Varigence, кроме «отправить нам репо» в феврале 2019 года. Varigence заявляет, что существует «предварительная сборка», которая устраняет проблему, но предварительная сборка не связана с последующими публикациями в потоке, которые запрашивают предварительную сборку остались без ответа. Я предполагаю, это предварительная сборка . Я попробовал предварительный просмотр 2019 года, и это не решило проблему. В сообщении Скотта Керри, в котором говорится о том, что исправления для предварительной сборки не соответствуют моей ситуации, он утверждает, что проблема возникает, когда вы используете таргетинг на низкоуровневую платформу, т.е. при использовании VS 2017 для таргетинга на SQL 2016. Я этого не делал, я использовал VS2017 на целевой SQL 2017.
Я также столкнулся с другой проблемой после этого, где я получал ошибку:
Невозможно создать пользовательский компонент, убедитесь, что хотя бы один класс
помечены с помощью SsisScriptTaskEntryPointattribute
Я исправил это, добавив ссылку на сборку в Microsoft.SqlServer.ScriptTask.dll. Эта ссылка на сборку не включена в примеры Varigence.
Полное исправленное решение выглядит следующим образом:
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<FlatFileConnection Name="Errors" FilePath="C:\Users\username\Desktop\BasicSSISErrors.csv" FileFormat="Errors" />
<FlatFileConnection Name="Source" FilePath="C:\Users\username\Desktop\BasicSSIS.csv" FileFormat="Source" />
</Connections>
<ScriptProjects>
<ScriptComponentProject ScriptLanguage="CSharp" Name="SCR - ErrorHelper" ProjectCoreName="SC_a8f35334a2234702a5f92abdcbedb4e4">
<AssemblyReferences>
<AssemblyReference AssemblyPath="Microsoft.SqlServer.DTSPipelineWrap.dll" />
<AssemblyReference AssemblyPath="Microsoft.SqlServer.DTSRuntimeWrap.dll" />
<AssemblyReference AssemblyPath="Microsoft.SqlServer.PipelineHost.dll" />
<AssemblyReference AssemblyPath="Microsoft.SqlServer.ScriptTask.dll" />
<AssemblyReference AssemblyPath="Microsoft.SqlServer.TxScript.dll" />
<AssemblyReference AssemblyPath="System.dll" />
<AssemblyReference AssemblyPath="System.Data.dll" />
<AssemblyReference AssemblyPath="System.Xml.dll" />
<AssemblyReference AssemblyPath="System.Core.dll" />
<AssemblyReference AssemblyPath="System.AddIn.dll" />
<AssemblyReference AssemblyPath="System.Data.dll" />
<AssemblyReference AssemblyPath="System.Xml.dll" />
</AssemblyReferences>
<Files>
<!-- Left alignment of .Net script to get a neat layout in package-->
<File Path="AssemblyInfo.cs">
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("SC_2bca370105ff4883a705860bac68cfba.csproj")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Varigence")]
[assembly: AssemblyProduct("SC_2bca370105ff4883a705860bac68cfba.csproj")]
[assembly: AssemblyCopyright("Copyright @ Varigence 2011")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.*")]</File>
<File Path="main.cs">
using System;
using System.Data;
using System.Linq;
using System.Net;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
var componentMetaData130 = this.ComponentMetaData as IDTSComponentMetaData130;
if (componentMetaData130 != null)
{
// 0 means no specific column is identified by ErrorColumn, this time.
if (Row.ErrorColumn == 0)
{
Row.ErrorColumnName = "Check the row for a violation of a foreign key constraint. No specific column is identified by ErrorColum";
}
else
{
Row.ErrorColumnName = componentMetaData130.GetIdentificationStringByID(Row.ErrorColumn);
}
}
}
}
</File>
</Files>
<OutputBuffers>
<OutputBuffer Name="Output0">
<Columns>
<Column Name="ErrorColumnName" Length="500" DataType="AnsiString" CodePage="1252" />
<Column Name="ErrorDescription" Length="500" DataType="AnsiString" CodePage="1252" />
</Columns>
</OutputBuffer>
</OutputBuffers>
<InputBuffer Name="Input0">
<Columns>
<Column Name="ErrorCode" />
<Column Name="ErrorColumn" />
</Columns>
</InputBuffer>
</ScriptComponentProject>
</ScriptProjects>
<Packages>
<Package Name="PackageFromBIML" Language="None" ConstraintMode="LinearOnCompletion" ProtectionLevel="EncryptSensitiveWithUserKey">
<Tasks>
<Dataflow Name="Data Flow Task">
<Transformations>
<FlatFileSource Name="Flat File Source" LocaleId="None" FileNameColumnName="" ConnectionName="Source" />
<DataConversion Name="Data Conversion">
<DataflowOverrides>
<OutputPath OutputPathName="Output">
<Columns>
<Column ErrorRowDisposition="RedirectRow" TruncationRowDisposition="RedirectRow" ColumnName="Converted" />
</Columns>
</OutputPath>
</DataflowOverrides>
<Columns>
<Column SourceColumn="Integers" TargetColumn="Converted" DataType="SByte" />
</Columns>
</DataConversion>
<ScriptComponentTransformation Name="Script Component" ProjectCoreName="SC_a8f35334a2234702a5f92abdcbedb4e4">
<InputPath OutputPathName="Data Conversion.Error" />
<ScriptComponentProjectReference ScriptComponentProjectName="SCR - ErrorHelper" />
</ScriptComponentTransformation>
<FlatFileDestination Name="Flat File Destination" LocaleId="None" ConnectionName="Errors">
<Header></Header>
</FlatFileDestination>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
<FileFormats>
<FlatFileFormat Name="Errors" CodePage="1252" TextQualifier="_x003C_none_x003E_" ColumnNamesInFirstDataRow="true" RowDelimiter="">
<Columns>
<Column Name="Integers" Length="50" DataType="AnsiString" Delimiter="Comma" MaximumWidth="50" />
<Column Name="ErrorCode" Delimiter="Comma" />
<Column Name="ErrorColumn" Delimiter="Comma" />
<Column Name="ErrorColumnName" DataType="AnsiString" Delimiter="Comma" />
<Column Name="ErrorDescription" DataType="AnsiString" Delimiter="CRLF" />
</Columns>
</FlatFileFormat>
<FlatFileFormat Name="Source" CodePage="1252" TextQualifier="_x003C_none_x003E_" ColumnNamesInFirstDataRow="true" RowDelimiter="">
<Columns>
<Column Name="Integers" Length="50" DataType="AnsiString" Delimiter="CRLF" MaximumWidth="50" />
</Columns>
</FlatFileFormat>
</FileFormats>
</Biml>