GetSchema

Метод предоставляет список (коллекцию) всех поддерживаемых ЛИНТЕР-сервером объектов БД в текущем соединении.

Синтаксис
public override DataTable GetSchema();
Возвращаемое значение

Объект типа System.Data.DataTable со списком поддерживаемых объектов БД и количеством доступных клиентскому приложению атрибутов и идентификационных частей этих объектов (таблица 10).

Таблица 10. Структура записей объекта DataTable для коллекции схем MetaDataCollections
Имя столбцаТип данных столбцаОписание
CollectionName
stringНаименование списка объектов БД (имя коллекции), которое можно передать методу GetSchema (String) для получения общей информации о коллекции (столбец 1 таблицы 11)
NumberOfRestriction
int

Количество атрибутов у объекта, по которым может запрашиваться индивидуальная информация. Например, для таблиц можно получать информацию о следующих 4-х атрибутах:

  • местоположение таблицы (на диске/в оперативной памяти);

  • схема таблицы;

  • имя таблицы;

  • тип таблицы.

А для последовательности – только о 2-х атрибутах: схема последовательности и имя последовательности. Перечень запрашиваемых атрибутов объекта задается во втором параметре метода GetSchema (String, array String) (допустимые имена атрибутов в столбце 3 таблицы 11).

Примечание

В текущей версии провайдера атрибут таблицы «местоположение таблицы» не поддерживается

NumberOfIdentifierParts
intКоличество составных частей в полном идентификаторе объекта. Например, в идентификаторе таблицы это число равно 2: имя владельца таблицы и имя таблицы, в идентификаторе столбца это число равно 3: имя владельца таблицы, имя таблицы и имя столбца

Перечень (коллекцию) всех поддерживаемых ЛИНТЕР-сервером объектов БД и их допустимые атрибуты представлен в таблице 11.

Таблица 11. Перечень возможных коллекций СУБД ЛИНТЕР
Имя коллекцииСодержимое коллекцииДопустимые атрибуты элементов коллекции
MetaDataCollectionsСведения обо всех коллекциях схем 
DataSourceInformationСведения об источнике данных 
DataTypesТипы поддерживаемых данных 
RestrictionsТипы атрибутов 
ReservedWordsЗарезервированные слова 
TablesСписок таблиц БД
  1. Catalog’ – местоположение таблицы (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема таблицы

  3. Table’ – имя таблицы

  4. Type’ – тип таблицы

Возможные значения атрибута Type:

  • SYSTEM TABLE – системная таблица;

  • TABLE – пользовательская таблица;

  • VIEW – представление

SynonymsСписок синонимов БД
  1. Catalog’ – местоположение синонима (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема синонима

    Для общих синонимов – PUBLIC

  3. Synonym’ – имя синонима

ViewsСписок представлений БД
  1. Catalog’ – местоположение представления (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема представлений

  3. View’ – имя представления

SequencesСписок последовательностей БД
  1. Schema’ – схема последовательности

  2. Sequence’ – имя последовательности

ColumnsСписок столбцов указанного объекта БД (таблицы, представления или синонима)
  1. Catalog’ – местоположение объекта (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема объекта

  3. Table’ – имя объекта

  4. Column’ – имя столбца

Примечание

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

UsersСписок пользователей БД
  1. User’ – имя пользователя

RolesСписок ролей БД
  1. Role’ – имя роли

ForeignKeysСписок внешних ключей БД
  1. Catalog’ – местоположение таблицы с этим ключом (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема таблицы

  3. Table’ – имя таблицы

  4. ForeignKey’ – имя внешнего ключа

ForeignKeyColumnsСписок столбцов составного ключа
  1. Catalog’ – местоположение таблицы с этим ключом (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема таблицы

  3. Table’ – имя таблицы

  4. ForeignKey’ – имя составного ключа

  5. ForeignKeyColumn’ – имя столбца в составном ключе

IndexesСписок индексов БД
  1. Catalog’ – местоположение таблицы с этим индексом (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема таблицы

  3. Table’ – имя таблицы

  4. Index’ – имя индекса. В текущей версии провайдера информация о типе индекса не поддерживается

IndexColumnsСписок столбцов составного индекса
  1. Catalog’ – местоположение таблицы с этим индексом (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема таблицы

  3. Table’ – имя таблицы

  4. Index’ – имя индекса

  5. Column’ – имя столбца в составном индексе

ProceduresСписок хранимых процедур БД
  1. Catalog’ – местоположение процедуры (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема процедуры

  3. Procedure’ – имя процедуры

ProcedureParametersСписок параметров хранимой процедуры
  1. Catalog’ – местоположение процедуры (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема процедуры

  3. Procedure’ – имя процедуры

ProcedureColumnsСписок полей курсора, возвращаемого хранимой процедурой
  1. Catalog’ – местоположение процедуры (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема процедуры

  3. Procedure’ – имя процедуры

TriggersСписок триггеров БД
  1. Catalog’ – местоположение триггера (в текущей версии провайдера не поддерживается)

  2. Schema’ – схема триггера

  3. Trigger’ – имя триггера. В текущей версии провайдера информация о привязке триггера к таблице и типе триггера не поддерживается

LevelsСписок мандатных уровней доступа
  1. Level’ – имя мандатного уровня доступа

StationsСписок рабочих станций
  1. Station’ – имя станции

ConnectionsСписок активных пользователей СУБД
  1. UserName’– имя пользователя, открывшего канал

ReplicationServersСписок серверов репликации
  1. ReplicationServer’ – имя удаленного сервера

DevicesСписок устройств
  1. Device’ – имя устройства

GroupsСписок групп защиты
  1. Group’ – имя группы

CharacterSetsСписок кодовых таблиц БД
  1. Id’ – системный идентификатор кодовой таблицы

  2. Name’ – имя кодовой таблицы


Примечание

Поддержка ниже перечисленных коллекций будет реализована в следующей версии ADO.NET-провайдера:

  • список хранимых событий;

  • список алиасов;

  • список форматов внешних файлов;

  • список правил репликации;

  • список фильтров полнотекстового поиска;

  • список правил трансляции кодировок.

Исключения
InvalidOperationException Соединение не открыто.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;

class GetSchemaSample
{
  static void Main()
  {
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    DbConnection con = factory.CreateConnection();
    con.ConnectionString = "User ID=SYSTEM;Password=MANAGER8;DataSource=LOCAL";
    try
    {
      // Соединение с БД
      con.Open();
      // Получение сведений о схеме базы данных
      DataTable schema = con.GetSchema();
      // Вывод полученных сведений на экран
      OutputDataTable(schema);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Ошибка: " + ex.Message);
    }
    finally
    {
      // Освобождение ресурсов
      con.Close();
    }
  }
  private static void OutputDataTable(DataTable dataTable)
  {
    Console.WriteLine(new String('-', 60));
    foreach (DataColumn column in dataTable.Columns)
    {
      Console.Write(column.ColumnName + " | ");
    }
    Console.WriteLine();
    Console.WriteLine(new String('-', 60));
    foreach (DataRow row in dataTable.Rows)
    {
      for (int i = 0; i <  dataTable.Columns.Count; i++)
      {
        if (row.IsNull(i))
        {
          Console.Write("< NULL > | ");
        }
        else
        {
          Console.Write(row[i] + " | ");
        }
      }
      Console.WriteLine();
    }
  }
}

Результат выполнения примера:

------------------------------------------------------------------
CollectionName       |NumberOfRestriction|NumberOfIdentifierParts|
------------------------------------------------------------------
CharacterSets        |2                  |1                      |
Columns              |4                  |3                      |
Connections          |1                  |1                      |
DataSourceInformation|0                  |0                      |
DataTypes            |0                  |0                      |
Devices              |1                  |1                      |
ForeignKeyColumns    |5                  |4                      |
ForeignKeys          |4                  |3                      |
Groups               |1                  |1                      |
IndexColumns         |5                  |4                      |
Indexes              |4                  |3                      |
Levels               |1                  |1                      |
MetaDataCollections  |0                  |0                      |
ProcedureColumns     |3                  |3                      |
ProcedureParameters  |3                  |3                      |
Procedures           |3                  |2                      |
ReplicationServers   |1                  |1                      |
ReservedWords        |0                  |0                      |
Restrictions         |0                  |0                      |
Roles                |1                  |1                      |
Sequences            |2                  |2                      |
Stations             |1                  |1                      |
Synonyms             |3                  |2                      |
Tables               |4                  |2                      |
Triggers             |3                  |2                      |
Users                |1                  |1                      |
Views                |3                  |2                      |