Partilhar via


Restrições de esquemas

Aplicável a: .NET Framework .NET .NET Standard

Baixar ADO.NET

O segundo parâmetro opcional do método GetSchema são as restrições usadas para limitar a quantidade de informações de esquema retornadas, e é transmitido para o método GetSchema como uma matriz de cadeias de caracteres. A posição na matriz determina os valores que podem se transmitidos, e isso é equivalente ao número da restrição.

Por exemplo, a tabela a seguir descreve as restrições compatíveis com a coleção de esquemas "Tables" usando o Provedor de Dados Microsoft SqlClient para SQL Server. As restrições adicionais para as coleções de esquemas do SQL Server são listadas ao final deste tópico.

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog TABLE_CATALOG 1
Proprietário @Owner TABLE_SCHEMA 2
Tabela @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Como especificar valores de restrição

Para usar uma das restrições da coleção de esquemas "Tables", basta criar uma matriz de cadeias de caracteres com quatro elementos e inserir um valor no elemento que corresponde ao número da restrição. Por exemplo, para restringir as tabelas retornadas pelo método GetSchema apenas às tabelas no esquema "Sales", defina o segundo elemento da matriz como "Sales" antes de transmiti-lo para o método GetSchema.

Observação

  • As coleções de restrições para SqlClient têm uma coluna ParameterName adicional. A coluna padrão de restrição ainda está disponível para compatibilidade com versões anteriores, mas é ignorada no momento. Consultas parametrizadas em vez de substituição de cadeia de caracteres devem ser usadas para minimizar o risco de um ataque de injeção de SQL ao especificar valores de restrição.
  • O número de elementos na matriz precisa ser inferior ou igual ao número de restrições compatíveis com a coleção de esquemas especificada. Caso contrário, uma ArgumentException será gerada. Pode haver menos do que o número máximo de restrições. As restrições ausentes são consideradas nulas (irrestrito).

Você pode consultar o Provedor de Dados Microsoft SqlClient para SQL Server para determinar a lista de restrições compatíveis chamando o método GetSchema com o nome da coleção de esquemas de restrições, que é "Restrictions". Isso retornará uma DataTable com uma lista de nomes de coleção, os nomes de restrição, os valores de restrição padrão e os números de restrição.

Exemplo

Os seguintes exemplos demonstram como usar o método GetSchema da classe SqlConnection do Provedor de Dados Microsoft SqlClient para SQL Server para recuperar informações de esquema sobre todas as tabelas contidas no banco de dados de exemplo AdventureWorks e para restringir as informações retornadas apenas às tabelas no esquema "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("============================");
        }
    }
}

Restrições de esquema do SQL Server

As tabelas a seguir listam as restrições para coleções de esquemas do SQL Server.

Usuários

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
User_Name @Name name 1

Bancos de dados

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Nome @Name Nome 1

Tabelas

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog TABLE_CATALOG 1
Proprietário @Owner TABLE_SCHEMA 2
Tabela @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Colunas

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog TABLE_CATALOG 1
Proprietário @Owner TABLE_SCHEMA 2
Tabela @Table TABLE_NAME 3
Coluna @Column COLUMN_NAME 4

StructuredTypeMembers

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog TABLE_CATALOG 1
Proprietário @Owner TABLE_SCHEMA 2
Tabela @Table TABLE_NAME 3
Coluna @Column COLUMN_NAME 4

Exibições

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog TABLE_CATALOG 1
Proprietário @Owner TABLE_SCHEMA 2
Tabela @Table TABLE_NAME 3

ViewColumns

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog VIEW_CATALOG 1
Proprietário @Owner VIEW_SCHEMA 2
Tabela @Table VIEW_NAME 3
Coluna @Column COLUMN_NAME 4

ProcedureParameters

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog SPECIFIC_CATALOG 1
Proprietário @Owner SPECIFIC_SCHEMA 2
Nome @Name SPECIFIC_NAME 3
Parâmetro @Parameter PARAMETER_NAME 4

Procedimentos

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog SPECIFIC_CATALOG 1
Proprietário @Owner SPECIFIC_SCHEMA 2
Nome @Name SPECIFIC_NAME 3
Tipo @Type ROUTINE_TYPE 4

IndexColumns

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog db_name() 1
Proprietário @Owner user_name() 2
Tabela @Table o.name 3
ConstraintName @ConstraintName x.name 4
Coluna @Column c.name 5

Índices

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog db_name() 1
Proprietário @Owner user_name() 2
Tabela @Table o.name 3

UserDefinedTypes

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Nome da restrição Nome do Parâmetro Padrão da restrição Número da restrição
Catálogo @Catalog CONSTRAINT_CATALOG 1
Proprietário @Owner CONSTRAINT_SCHEMA 2
Tabela @Table TABLE_NAME 3
Nome @Name CONSTRAINT_NAME 4

Confira também