Область применения:
.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 |
Связанные материалы