Udostępnij za pośrednictwem


Rodzajowy typ zbierających kwerendy T-SQL

Rodzajowy kwerendy T SQL typ modułu zbierającego wykonuje dostarczonych 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 zbierających jest zarejestrowany w core.supported_collector_types przeglądać w magazyn danych zarządzania.

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

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

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

  • Database — Określ bazy danych lub baz danych, aby uruchomić zapytanie.Można określić nazwę bazy danych lub * wieloznacznego, aby określić wszystkie bazy danych na serwerze.Jeśli nie zostanie określona wartość dla Database, kwerenda jest uruchamiana wszystkie bazy danych systemu.

Rodzajowy T-SQL kwerendy wprowadzania schematu

Schemat dla wprowadzania zbierających rodzajowy T-SQL kwerendy 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>

Następujące przykłady kodu Pokaż, jak użyć schematu.Pełny kod przykładowy, zobacz Jak Tworzenie zestawu z typu rodzajowego T-SQL kwerendy zbierających.

Przykład 1

Poniższy przykład kwerendy baz danych systemu i użytkownika, a następnie umieszcza wyniki w custom_snapshots.VerifyDbName tabela.

<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 custom_snapshots.MyOutputTable1 tabela.

<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 custom_snapshots.MyOutputTable2 i custom_snapshots.MyOutputTable3 tabele.

<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 oddzielnej zbiórki przedmiotów

W poprzednim przykładzie wszystkie kwerendy są wykonywane tego samego zestaw baz danych.Jeśli konieczne jest wykonać innej kwerendy dla różnych baz danych, należy utworzyć oddzielne element kolekcja dla każdej kombinacji bazy danych kwerendy.

Inny scenariusz, który wymaga innej kolekcja elementów jest dwóch baz danych z tej samej nazwy tabela, ale inny schemat.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 wyjście

Metadane danych wyjściowych kwerendy zależy od Transact-SQL instrukcja określonych przez użytkownika, ale mapowania kolumna w danych przepływu źródłowego lub docelowego jest tworzony w projekt czas.Oznacza to, że każdy element kolekcja, która wykorzystuje ten typ modułów zbierających wymaga dostosowany pakiet wygenerowany przy uruchomieniu czas i dostosowane do formatu jego schemat.

Moduł zbierający dane używa zadanie niestandardowe do utworzenia pakiet zbierania i przekazywania pakiet nowy element kolekcja jest odbierana, lub jeśli jest dostępna aktualizacja parametry wejściowe dla istniejącego element kolekcja.Pakiety te są zapisywane w msdb , dzięki czemu mogą być ponownie użyte.

Zachowanie zbieranie i przekazywanie danych są podobne do opisanego w architektury modułów zbierających dane i przetwarzania, ale implementowane nieco inaczej dla rodzajowego kwerendy T SQL typ modułu zbierającego.

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

  • core.snapshots -W poniższej tabela opisano każdy nowy migawka.

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

  • core.source.info -Ta tabela przechowuje informacje o danych źródło jak również dane.

Ograniczenia

Istnieją pewne ograniczenia pamiętać podczas używania kwerendy rodzajowy T-SQL, typ modułu zbierającego:

  • Następujące kolumna nazwy są zarezerwowane dla modułów zbierających dane: snapshot_time, snapshot_id and database_name.Bez tabel utworzonych przez zestawy kolekcja niestandardowej można użyć tych nazw.Jeśli próby ich używać, zwracany jest błąd.

  • Kolumna typu sysname jest konwertowany na nvarchar(128) podczas kopiowania do magazyn danych zarządzania.Podczas danych kolekcja, SQL Server 2008 Integration Services (SSIS) konwertuje typy danych bazy danych do SSIS typów danych (na przykład sysname staje się DT_WSTR, i nvarchar(len) staje się DT_WSTR).Ta konwersja odbywa się wewnątrz źródło DB OLE zadanie przepływu danych.Podczas wysyłania danych modułów zbierających dane odczytuje dane z pamięci podręcznej jako SSIS Typ danych a danymi jest traktowany jako nvarchar(128), która jest funkcjonalnie równoważne sysname.

  • kolumna, która jest typu char(N) staje się varchar(N) podczas kopiowania do magazyn danych zarządzania (char(N) można dopasowanie w varchar(N)).Z wyjątkiem przypadku fakt, char ustalony rozmiar magazynu, należy varchar rozmiaru składowania jest zmienny, te typy 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.

  • sqlvariant Typu pobiera obsługiwane domyślnie przetwarzania dla kolumn, SSIS nie bezpośrednio uchwyt.Oznacza to, że kolumny są traktowane jako nvarchar(255), pozostawiając żadnej konwersji dla dostawca danych.

    Ostrzeżenie

    W takim przypadek kolumna jest tworzony z domyślną długość 255 znaków.Można go jednak zmienić 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ędą.

  • 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óry używa rodzajowego T-SQL kwerendy typ modułu zbierającego:

    • image

    • text

    • ntext

    • XML

  • Wszystkie kwerendy wykonywane przez typ rodzajowy T-SQL kwerendy zbierających musi zwracać jeden zestaw wyników.

  • Lokalne tymczasowej tabela kwerendy są obsługiwane tylko pierwsze są one zgłoszone jako część tej samej partia.Tabela tymczasowa globalnych kwerendy są w pełni obsługiwane.

  • Żadnych indeksów, kluczy prywatnych, klucze obce lub innych ograniczeń, które są przewożone do tabel miejsce docelowe w magazyn danych zarządzania.Jest tak, ponieważ te same dane są proszeni wiele razy, a dane można pochodzących z wielu komputerów do pojedynczej tabela.

  • Inne ograniczenia dotyczące typu obsługiwanych kwerend, które dotyczą źródło OLE DB zadanie przepływ danych w SSIS stosuje się także do typu zbierających rodzajowy T-SQL kwerendy.