Поделиться через


Реализация внешних метаданных

Если компонент отключен от источника данных, можно выполнить проверку столбцов во входных и выходных коллекциях столбцов относительно внешнего источника данных с помощью интерфейса IDTSExternalMetadataColumnCollection100. Он позволяет сохранять моментальный снимок столбцов внешнего источника данных и сопоставлять эти столбцы со столбцами входных и выходных коллекций столбцов компонента.

Реализация столбцов внешних метаданных добавляет издержки и сложности при разработке компонента, поскольку необходимо хранить дополнительную коллекцию столбцов и выполнять их проверку, но возможность избежать затратных обращений к серверу во время проверки может оправдать такую разработку.

Заполнение столбцов внешних метаданных

Столбцы внешних метаданных обычно добавляются к коллекции, если создан соответствующий входной или выходной столбец. Новые столбцы создаются вызовом метода New. Затем устанавливаются свойства столбца, чтобы соответствовать внешнему источнику данных.

Столбец внешних метаданных сопоставляется с соответствующим входным или выходным столбцом путем присвоения идентификатора столбца внешних метаданных свойству ExternalMetadataColumnID входного или выходного столбца. Это позволяет легко обнаружить столбец внешних метаданных для конкретного входного или выходного столбца с помощью метода GetObjectByID коллекции.

В следующем примере показано создание столбца внешних метаданных и его сопоставление с выходным столбцом с помощью установки свойства ExternalMetadataColumnID.

public void CreateExternalMetaDataColumn(IDTSOutput100 output, int outputColumnID )
{
    IDTSOutputColumn100 oColumn = output.OutputColumnCollection.GetObjectByID(outputColumnID);
    IDTSExternalMetadataColumn100 eColumn = output.ExternalMetadataColumnCollection.New();

    eColumn.DataType = oColumn.DataType;
    eColumn.Precision = oColumn.Precision;
    eColumn.Scale = oColumn.Scale;
    eColumn.Length = oColumn.Length;
    eColumn.CodePage = oColumn.CodePage;

    oColumn.ExternalMetadataColumnID = eColumn.ID;
}
Public Sub CreateExternalMetaDataColumn(ByVal output As IDTSOutput100, ByVal outputColumnID As Integer) 
 Dim oColumn As IDTSOutputColumn100 = output.OutputColumnCollection.GetObjectByID(outputColumnID) 
 Dim eColumn As IDTSExternalMetadataColumn100 = output.ExternalMetadataColumnCollection.New 
 eColumn.DataType = oColumn.DataType 
 eColumn.Precision = oColumn.Precision 
 eColumn.Scale = oColumn.Scale 
 eColumn.Length = oColumn.Length 
 eColumn.CodePage = oColumn.CodePage 
 oColumn.ExternalMetadataColumnID = eColumn.ID 
End Sub

Проверка с помощью столбцов внешних метаданных

Проверка требует дополнительных шагов для компонента, хранящего коллекцию столбцов внешних метаданных, поскольку проверку необходимо выполнять относительно дополнительной коллекции столбцов. Проверку можно разделить на проверку с подключением и проверку с отключением.

Проверка с подключением

Если компонент подключен к внешнему источнику данных, столбцы во входной или выходной коллекции проверяются непосредственно по внешнему источнику данных. Кроме того, необходимо выполнить проверку в отношении столбцов в коллекции внешних метаданных. Она необходима, поскольку коллекцию внешних метаданных можно изменить с помощью расширенного редактора в среде Business Intelligence Development Studio, а изменения коллекции не обнаруживаются. Поэтому в подключенном состоянии компоненты должны гарантировать соответствие коллекции столбцов внешних метаданных столбцам во внешнем источнике данных.

В окне Расширенный редактор можно скрыть коллекции столбцов внешних метаданных, присвоив свойству IsUsed коллекции значение false. Однако при этом также скрывается вкладка Сопоставление столбцов редактора, которая позволяет пользователям сопоставлять столбцы из входной или выходной коллекции столбцам коллекции столбцов внешних метаданных. Значение false этого свойства не мешает разработчиками программно изменять коллекцию, но оно обеспечивает уровень защиты коллекции столбцов внешних метаданных для компонента, который используется исключительно в среде Business Intelligence Development Studio.

Проверка с отключением

Если компонент отключен от внешнего источника данных, проверка упрощается, поскольку столбцы во входной или выходной коллекции проверяются по коллекции внешних метаданных, а не по внешнему источнику данных. Компонент должен выполнять проверку с отключением, если не установлено соединение с внешним источником данных или если свойство ValidateExternalMetadata имеет значение false.

В следующем примере кода показана реализация компонента, выполняющего проверку подлинности по коллекции столбцов внешних метаданных. Более подробный пример см. в образцах служб Integration Services в разделе Codeplex.

public override DTSValidationStatus Validate()
{
    if( this.isConnected && ComponentMetaData.ValidateExternalMetaData )
    {
        // TODO: Perform connected validation.
    }
    else
    {
        // TODO: Perform disconnected validation.
    }
}
Public  Overrides Function Validate() As DTSValidationStatus 
 If Me.isConnected AndAlso ComponentMetaData.ValidateExternalMetaData Then 
  ' TODO: Perform connected validation.
 Else 
  ' TODO: Perform disconnected validation.
 End If 
End Function
Значок служб Integration Services (маленький) Будьте в курсе новых возможностей служб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet.

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.

См. также

Основные понятия