Udostępnij za pośrednictwem


Generic T-SQL Query Collector Type

Typ rodzajowy kwerendy T-SQL zbierającego wykonuje dostarczone przez użytkownika Transact-SQL Instrukcja jako parametr wejściowy, zapisuje dane wyjściowe z kwerendy, a następnie wysyła dane wyjściowe do magazyn danych zarządzania. Ten typ modułu zbierającego dane dane jest zarejestrowany w widoku core.supported_collector_types w hurtowni danych zarządzania.

Ten moduł zbierający ma następujące parametry wejściowe:

  • Value - The Transact-SQL query.Można podać więcej niż jednej kwerendy jako danych wejściowych.

  • OutputTable -Należy podać nazwę tabela, do zapisywania wyniki kwerendy przed są one przekazywane do magazyn danych zarządzania.

  • Database – Określa bazy danych lub baz danych, aby uruchomić kwerendę przed.Można określić nazwę bazy danych lub przy użyciu * wieloznaczny, aby określić wszystkie bazy danych na serwerze.Jeśli nie zostanie określona wartość w polu Database, kwerenda jest wykonywana dla wszystkich baz danych systemu.

Ogólny schemat wprowadzania Query T-SQL

Schemat na rodzajowy T-SQL Query modułów zbierających dane jest następująca:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="DataCollectorType">
  <xs:element name="TSQLQueryCollector">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Query" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Value" type="xs:string" />
              <xs:element name="OutputTable" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Databases" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Database" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="UseSystemDatabases" type="xs:boolean" use="optional" />
            <xs:attribute name="UseUserDatabases" type="xs:boolean" use="optional" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

W poniższych przykładach kodu pokazują, jak można użyć schematu.Aby pełny kod przykładowy zobacz How to: Create a Custom Collection Set That Uses the Generic T-SQL Query Collector Type.

Przykład 1

W poniższym przykładzie kwerendy bazy danych systemu i użytkownika, a następnie umieszcza wyniki w tabela custom_snapshots.VerifyDbName.

<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
  <Query>
    <Value>SELECT DB_NAME() as db_name</Value>
    <OutputTable>VerifyDbName</OutputTable>
  </Query>
  <Databases UseSystemDatabases="true" UseUserDatabases="true" /> 
</ns:TSQLQueryCollector>

Przykład 2

W poniższym przykładzie kwerendy trzy bazy danych systemu i umieszcza wyniki w tabela custom_snapshots.MyOutputTable1.

<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
  <Query>
    <Value>SELECT * FROM sys.objects</Value>
    <OutputTable>MyOutputTable1</OutputTable>
  </Query>
  <Databases>
    <Database>model</Database>
    <Database>tempdb</Database>
    <Database>master</Database>
  </Databases>
</ns:TSQLQueryCollector>

Przykład 3

W poniższym przykładzie kwerendy tylko baz danych użytkowników i umieszcza wyniki w tabeli custom_snapshots.MyOutputTable2 i custom_snapshots.MyOutputTable3.

<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
  <Query>
    <Value>SELECT * FROM sys.dm_tran_database_transactions</Value>
    <OutputTable>MyOutputTable2</OutputTable>
  </Query>
  <Query>
    <Value>SELECT * FROM sys.dm_db_file_space_usage</Value>
    <OutputTable>MyOutputTable3</OutputTable>
  </Query>
  <Databases UseSystemDatabases="false" UseUserDatabases="true" />
</ns:TSQLQueryCollector>

Kiedy korzystać z osobnych kolekcja elementy

W powyższym przykładzie wszystkie kwerendy są wykonywane przed ten sam zestaw baz danych.Jeśli konieczne jest wykonać innej kwerendy dla różnych baz danych, należy utworzyć oddzielne element kolekcji dla każdej kombinacji bazy danych kwerendy.

Inny scenariusz, który wymaga innej kolekcja elementów jest dwie bazy danych z tej samej nazwy tabela, lecz innego schematu.Przykład 4 zawiera elementy kolekcja do obsługi tego scenariusza.

Przykład 4

Tworzenie element kolekcja dla pierwszej bazy danych db1.

<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
  <Query>
    <Value>SELECT * FROM mytable</Value> -- Query mytable
    <OutputTable>MyOutputTable1</OutputTable>
  </Query>
  <Databases>
    <Database>db1</Database>
  </Databases>
</ns:TSQLQueryCollector>

Tworzenie element kolekcja dla drugiej bazy danych db2.

<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
  <Query>
    <Value>SELECT * FROM mytable</Value> -- Query mytable
    <OutputTable>MyOutputTable2</OutputTable>
  </Query>
  <Databases>
    <Database>db2</Database>
  </Databases>
</ns:TSQLQueryCollector>

Przetwarzanie i produkcji

Metadane danych wyjściowych kwerendy zależy od tego, Transact-SQL Instrukcja określonej przez użytkownika, ale mapowania kolumna w danych przepływu źródłowego lub docelowego jest tworzony w projekcie czas. Oznacza to, że każdy element kolekcja tego typ modułu zbierającego dane zastosowań wymaga dostosowany pakiet generowanych w czasie wykonywania i przystosowane do publikacji w formacie jego schemat.

Moduł zbierający dane używa zadanie niestandardowe do utworzenia pakietu pobierania i pakiet przekazywania po odebraniu nowego element w kolekcja lub jeśli jest dostępna aktualizacja w parametry wejściowe do istniejącego element kolekcja.Pakiety te są zapisywane w msdb, więc ponownego użycia.

Dane kolekcja i zachowanie przekazywania są podobne do opisanego w Architektura modułów zbierających dane i przetwarzania, ale implementowany nieco inaczej dla typ modułu zbierającego dane rodzajowy kwerendy T-SQL.

W poniższych tabelach magazyn danych zarządzania są używane do przechowywania danych zebranych przez typ modułu zbierającego dane rodzajowy T-SQL kwerendy:

  • Core.snapshots - tej tabela identyfikuje każdy nowy migawka.

  • Core.snapshot_timetable - czas migawka jest przechowywany w osobnej tabela, ponieważ wielu migawek może się zdarzyć w prawie tym samym czasie.

  • Core.urządzenie źródłowe.info - tej tabela przechowywane są informacje o źródle danych, a także dane.

Ograniczenia

Istnieją pewne ograniczenia pod uwagę podczas używania typ modułu zbierającego dane rodzajowy T-SQL kwerendy:

  • Następujące nazwy kolumn są zarezerwowane dla modułów zbierających dane: snapshot_time snapshot_id i nazwa_bazy_danych. Nie tabel utworzonych przez zestawy kolekcja niestandardowej można użyć tych nazw.Jeśli nastąpi próba ich użycia, zwracany jest błąd.

  • Kolumna typu sysname jest konwertowany na nvarchar(128) Jeśli numer jest kopiowany do magazyn danych zarządzania. Podczas zbierania danych SQL Server 2008 Integration Services (SSIS) Konwertuje typy danych bazy danych do SSIS typy danych (np. sysname staje się DT_WSTR, a nvarchar(len) staje się DT_WSTR). Ta konwersja odbywa się wewnątrz zadania przepływ danych źródłowych baz danych OLE.Podczas przekazywania danych, modułów zbierających dane odczytuje dane z pamięci podręcznej jako SSIS Typ danych oraz danych jest traktowany jako nvarchar(128), funkcjonalnie odpowiada systemowi sysname.

  • kolumna, która jest typu char(N) staje się varchar(N) Podczas kopiowania do magazyn danych zarządzania ()char(N) można zmieścić w varchar(N)). Z wyjątkiem na fakt, char limit rozmiaru składowania jest stały, dlatego varchar limit rozmiaru składowania jest zmienna, tego typu są traktowane jako funkcjonalnie równoważne.

  • kolumna, która jest typu varbinary staje się binary Podczas kopiowania do magazyn danych zarządzania.

  • kolumna, która jest typu decimal staje się numeric Podczas kopiowania do magazyn danych zarządzania.

  • kolumna, która jest typu nchar staje się nvarchar Podczas kopiowania do magazyn danych zarządzania.

  • The sqlvariant type gets handled by the default processing for columns that SSIS does not directly handle.Oznacza to, że w kolumnach są traktowane jako nvarchar(255), pozostawiając żadnej konwersji dostawca danych.

    Uwaga

    W takim przypadek kolumnie jest tworzony z domyślną długość 255 znaków.Jednak można ją zmienić na 4000 znaków.

  • Wszystkie kolumny zwrócony przez Transact-SQL kwerendy musi mieć nazwę. Na przykład select 1 nie będzie działał, ale select 1 as one będzie.

  • Następujące typy danych nie są obsługiwane przez SSIS i nie można dołączyć jako kolumny w tabela dane wyjściowe generowane przez zestaw kolekcja, które używa typ modułu zbierającego dane rodzajowy T-SQL kwerendy:

    • image

    • text

    • ntext

    • XML

  • Wszystkie kwerendy wykonywane przez typ modułu zbierającego dane rodzajowy T-SQL kwerendy musi zwrócić zestaw wyników w jednym.

  • Lokalnej tabela tymczasowej kwerendy są obsługiwane tylko w przypadku, jeżeli najpierw zostały zgłoszone jako część tej samej serii.Kwerendy globalne tabele tymczasowe są w pełni obsługiwane.

  • Nie indeksy, klucze prywatne, klucze obce lub innych ograniczeń są przenoszone do tabel miejsce docelowe w hurtowni danych zarządzania.Dzieje się tak, ponieważ te same dane są proszeni wiele razy, a dane mogą być pochodzących z wielu komputerów do pojedynczej tabela.

  • Inne ograniczenia dotyczące typu obsługiwanych kwerendy, które dotyczą zadania przepływ danych OLE DB urządzenie źródłowe w SSIS mają również zastosowanie do typ modułu zbierającego dane rodzajowy kwerendy T-SQL.

Historia zmian

Microsoft Learning

Poprawiono schematu typ modułu zbierającego dane rodzajowy Query T-SQL i we wszystkich przykładach.