#sql-server #ssis
#sql-сервер #ssis
Вопрос:
** Мой исходный код Oledb —
при добавлении второго параметра он переопределяет первый. как решить? **
IDTSComponentMetaData100 Source = PopulateEtlDataSourceDetailDFT.ComponentMetaDataCollection.New();
Source.ComponentClassID = "DTSAdapter.OleDbSource";
CManagedComponentWrapper srcDesignTime = Source.Instantiate();
srcDesignTime.ProvideComponentProperties();
Source.Name = "OLEDB Source";
//Assigning Connection manager
Source.RuntimeConnectionCollection[0].ConnectionManagerID = Config.ID;
Source.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.GetExtendedInterface(Config);
// Set the custom properties of the source.
srcDesignTime.SetComponentProperty("AccessMode", 2);
Guid variableGuid = new Guid(ETLSourceRunId.ID);
String ParamProperty = @"""@OrganizationName"",{" variableGuid.ToString().ToUpper() @"};";
srcDesignTime.SetComponentProperty("ParameterMapping", ParamProperty);
Guid variableGuid1 = new Guid(Parent_ETLSourceRunId.ID);
String ParamProperty1 = @"""@SourceRunID"",{" variableGuid.ToString().ToUpper() @"};";
srcDesignTime.SetComponentProperty("ParameterMapping", ParamProperty1);
srcDesignTime.SetComponentProperty("SqlCommand","EXEC [dbo].[USP_GetCustomerEtlSourceDetailRecordSet] @OrganizationName=?,@SourceRunID=?");
srcDesignTime.AcquireConnections(null);
srcDesignTime.ReinitializeMetaData();
srcDesignTime.ReleaseConnections();
1. Как добавить несколько параметров в источник oledb? и
2. как добавить параметры проекта в источник oledb?
Ответ №1:
Я не профессионал в c #, но:
Guid variableGuid = new Guid(ETLSourceRunId.ID);
String ParamProperty = @"""@OrganizationName"",{" variableGuid.ToString().ToUpper() @"};";
srcDesignTime.SetComponentProperty("ParameterMapping", ParamProperty);
Guid variableGuid1 = new Guid(Parent_ETLSourceRunId.ID);
String ParamProperty1 = @"""@SourceRunID"",{" variableGuid.ToString().ToUpper() @"};";
srcDesignTime.SetComponentProperty("ParameterMapping", ParamProperty1);
2-й с последней строки:
String ParamProperty1 = @"""@SourceRunID"",{" variableGuid.ToString().ToUpper() @"};";
разве это не должен быть variableGuid1.toString().Upper(), а не variableGuid .toString().Upper() поскольку вы присваиваете значение как:
Guid variableGuid1 = new Guid(Parent_ETLSourceRunId.ID);
Ответ №2:
Попробуйте использовать команду SQL из переменной в качестве режима доступа к данным. Создайте переменную в виде строки и задайте ее значение для вашей SqlCommand. Если для вашей команды SqlCommand требуется несколько параметров, снова создайте переменные для хранения этих значений и используйте эти переменные в значении переменной SqlCommand.
Вы можете начать с этой статьи.
Шаги
1) Создайте переменную для SqlCommand
strVarSqlCommand = "EXEC [dbo].[USP_GetCustomerEtlSourceDetailRecordSet] @OrganizationName=strVarOrgName ,@SourceRunID=strVarSrcRunId"
2) создайте переменные для ссылки в переменной Sqlcommand
strVarOrgName = "XXX"
strVarSrcRunId="YYY"
Согласно вашему требованию, вы можете задать значения для этих переменных как жестко, так и динамически.
3) Используйте strVarSqlCommand
переменную в источнике ole db, где режим доступа к данным — команда с переменной