Контроль версий для файлов C # компонента сценария в SSIS

У меня есть эта проблема с использованием контроля версий с SSIS. Когда я пишу компонент сценария, он проверяется в системе управления версиями как двоичные файлы, а не как файл C # (хотя это и понятно). Поэтому в следующий раз, когда я внесу изменения в файл C # компонента Script, я не смогу увидеть разницу в коде.

Есть ли способ обойти эту проблему? Что вы, ребята, с этим делаете?

Спасибо, Вайбхав


person Kumar Vaibhav    schedule 13.12.2013    source источник


Ответы (1)


Все пакеты SSIS, с которыми я сейчас работаю (SSIS 2008), хранят код компонента сценария непосредственно в файле .dtsx (это просто файлы XML). Тем не менее, вы можете использовать инструмент сравнения текста (Visual Studio Compare, WinMerge, BIDS Helper Smart Diff) для сравнения файлов .dtsx. Хотя это может быть не самый простой способ сделать это, он позволяет увидеть разницу между версиями.

Ниже приведен фрагмент, который я извлек непосредственно из файла .dtsx с помощью компонента сценария (C # хранится как CDATA):

<component id="4829" name="ExecuteQuery" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="-1" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" contactInfo="Executes a custom script.;Microsoft Corporation; Microsoft SqlServer v10; © 2007 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;4">
<properties>
<property id="4833" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\main.cs]]></arrayElement><arrayElement dataType="System.String"><![CDATA[/* Microsoft SQL Server Integration Services Script Component
*  Write scripts using Microsoft Visual C# 2008.
*  ScriptMain is the entry point class of the script.*/

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Teradata.Client.Provider;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    private TdConnection tdCn;
    private TdCommand tdCmd;
    private TdDataReader tdRdr;
person gannaway    schedule 14.12.2013
comment
Я думаю, что на данный момент это единственный доступный вариант. Я подожду еще несколько ответов, прежде чем отмечать этот. Спасибо ! - person Kumar Vaibhav; 17.12.2013