Ограничения схемы

Область применения: .NET Framework .NET .NET Standard

Скачать ADO.NET

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

Например, в следующей таблице описаны ограничения, поддерживаемые коллекцией схем "Tables" при использовании поставщика данных Microsoft SqlClient для SQL Server. Дополнительные ограничения для коллекций схем SQL Server перечислены в конце данного раздела.

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog TABLE_CATALOG 1
Владелец @Owner TABLE_SCHEMA 2
Таблица @Name TABLE_NAME 3
Тип таблицы @TableType TABLE_TYPE 4

Указание значений ограничения

Чтобы использовать одно из ограничений коллекции схем Tables, необходимо создать массив строк с четырьмя элементами, затем поместить значение в элемент, совпадающий с номером ограничения. Например, чтобы ограничить таблицы, возвращаемые методом GetSchema только таблицами из схемы "Sales", перед передачей массива методу GetSchema присвойте второму элементу массива значение "Sales".

Примечание.

  • В коллекциях ограничений для SqlClient есть дополнительный столбец ParameterName. Столбец ограничения по умолчанию всё ещё есть для обратной совместимости, но сейчас игнорируется. Для минимизации риска атаки SQL-инъекции при указании значений ограничений следует использовать параметризованные запросы, а не подстановку строк.
  • Количество элементов в массиве должно быть меньше или равно числу ограничений, поддерживаемых для указанной коллекции схем; в противном случае будет сгенерировано исключение ArgumentException. Их может быть меньше максимального количества ограничений. Предполагается, что отсутствующие ограничения имеют значение NULL (без ограничений).

Список поддерживаемых ограничений можно получить у поставщика данных Microsoft SqlClient для SQL Server, вызвав метод GetSchema с именем коллекции схемы ограничений "Restrictions". Будет возвращен объект DataTable со списком имен коллекций и ограничений, значениями ограничений по умолчанию и номерами ограничений.

Пример

В приведенных ниже примерах показано, как использовать метод GetSchema класса SqlConnection поставщика данных Microsoft SqlClient для SQL Server для извлечения сведений о схеме обо всех таблицах, содержащихся в образце базы данных AdventureWorks, а также для ограничения возвращаемых сведений только таблицами из схемы "Sales":

using System;
using System.Data;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main(string[] args)
    {
        string connectionString = "Data Source = localhost; Integrated Security = true; Initial Catalog = AdventureWorks";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // Specify the restrictions.  
            string[] restrictions = new string[4];
            restrictions[1] = "Sales";
            System.Data.DataTable table = connection.GetSchema("Tables", restrictions);

            // Display the contents of the table.  
            DisplayData(table);
            Console.WriteLine("Press any key to continue.");
            Console.ReadKey();
        }
    }

    private static void DisplayData(System.Data.DataTable table)
    {
        foreach (System.Data.DataRow row in table.Rows)
        {
            foreach (System.Data.DataColumn col in table.Columns)
            {
                Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
            }
            Console.WriteLine("============================");
        }
    }
}

Ограничения схемы SQL Server

В приведенных ниже таблицах перечислены ограничения коллекций схем SQL Server.

Пользователи

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
User_Name @Name имя 1

Базы данных

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Имя. @Name Имя. 1

Таблицы

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog TABLE_CATALOG 1
Владелец @Owner TABLE_SCHEMA 2
Таблица @Name TABLE_NAME 3
Тип таблицы @TableType TABLE_TYPE 4

Столбцы

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog TABLE_CATALOG 1
Владелец @Owner TABLE_SCHEMA 2
Таблица @Table TABLE_NAME 3
Столбец @Column COLUMN_NAME 4

Члены структурированного типа

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog TABLE_CATALOG 1
Владелец @Owner TABLE_SCHEMA 2
Таблица @Table TABLE_NAME 3
Столбец @Column COLUMN_NAME 4

Представления

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog TABLE_CATALOG 1
Владелец @Owner TABLE_SCHEMA 2
Таблица @Table TABLE_NAME 3

Просмотр столбцов

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog ПРОСМОТР_КАТАЛОГА 1
Владелец @Owner VIEW_SCHEMA 2
Таблица @Table VIEW_NAME 3
Столбец @Column COLUMN_NAME 4

Параметры процедуры

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog SPECIFIC_CATALOG 1
Владелец @Owner SPECIFIC_SCHEMA 2
Имя. @Name SPECIFIC_NAME 3
Параметр @Parameter PARAMETER_NAME 4

Процедуры

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog SPECIFIC_CATALOG 1
Владелец @Owner SPECIFIC_SCHEMA 2
Имя. @Name SPECIFIC_NAME 3
Тип @Type ROUTINE_TYPE 4

Столбцы индекса

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog db_name() 1
Владелец @Owner user_name() 2
Таблица @Table o.name 3
ConstraintName @ConstraintName x.name 4
Столбец @Column c.name 5

Индексы

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog db_name() 1
Владелец @Owner user_name() 2
Таблица @Table o.name 3

Типы, определяемые пользователем

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Имя ограничения Имя параметра Ограничение по умолчанию Номер ограничения
Каталог @Catalog CONSTRAINT_CATALOG 1
Владелец @Owner CONSTRAINT_SCHEMA 2
Таблица @Table TABLE_NAME 3
Имя. @Name CONSTRAINT_NAME 4