Partager via


Restrictions de schéma

S'applique à : .NET Framework .NET .NET Standard

Télécharger ADO.NET

Le deuxième paramètre facultatif de la méthode GetSchema correspond aux restrictions destinées à limiter la quantité d’informations de schéma retournées ; il est passé à la méthode GetSchema sous la forme d’un tableau de chaînes. La position dans le tableau détermine les valeurs que vous pouvez passer et équivaut au numéro de restriction.

Par exemple, le tableau suivant décrit les restrictions prises en charge par la collection de schémas « Tables » en utilisant le fournisseur de données Microsoft SqlClient pour SQL Server. Des restrictions supplémentaires pour les collections de schémas SQL Server figurent à la fin de cette rubrique.

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog TABLE_CATALOG 1
Propriétaire @Owner TABLE_SCHEMA 2
Table de charge de travail @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Spécification des valeurs de restriction

Pour utiliser l’une des restrictions de la collection de schémas « Tables », créez simplement un tableau de chaînes contenant quatre éléments, puis placez une valeur dans l’élément correspondant au numéro de restriction. Par exemple, pour limiter les tables retournées par la méthode GetSchema à celles du schéma « Sales » uniquement, définissez le deuxième élément du tableau sur « Sales » avant de le passer à la méthode GetSchema.

Notes

  • Les collections de restrictions pour SqlClient présentent une colonne ParameterName supplémentaire. La colonne par défaut de la restriction est encore là pour la compatibilité ascendante, mais est désormais ignorée. Les requêtes paramétrables plutôt que le remplacement de chaîne doivent être utilisées pour réduire le risque d’attaque par injection SQL lors de la spécification de valeurs de restriction.
  • Le nombre d'éléments du tableau doit être inférieur ou égal au nombre de restrictions prises en charge pour la collection de schémas spécifiée, sans quoi une exception ArgumentException est levée. Il peut y avoir moins de restrictions que le nombre maximal de restrictions. Les restrictions manquantes sont supposées avoir la valeur null (aucune restriction).

Vous pouvez interroger le fournisseur de données Microsoft SqlClient pour SQL Server pour établir la liste des restrictions prises en charge en appelant la méthode GetSchema avec le nom de la collection de schémas de restrictions, « Restrictions ». Cette opération retourne un DataTable contenant une liste des noms de collections, des noms de restriction, des valeurs de restriction par défaut et des numéros de restriction.

Exemple

Les exemples suivants montrent comment utiliser la méthode GetSchema de la classe SqlConnection du fournisseur de données Microsoft SqlClient pour SQL Server afin d’extraire les informations de schéma sur toutes les tables contenues dans l’exemple de base de données AdventureWorks et de limiter les informations retournées exclusivement aux tables du schéma « 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("============================");
        }
    }
}

Restrictions de schéma SQL Server

Les tableaux suivants énumèrent les restrictions pour les collections de schémas SQL Server.

Utilisateurs

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
User_Name @Name name 1

Bases de données

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Nom @Name Nom 1

Tables

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog TABLE_CATALOG 1
Propriétaire @Owner TABLE_SCHEMA 2
Table de charge de travail @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Colonnes

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog TABLE_CATALOG 1
Propriétaire @Owner TABLE_SCHEMA 2
Table de charge de travail @Table TABLE_NAME 3
Colonne @Column COLUMN_NAME 4

StructuredTypeMembers

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog TABLE_CATALOG 1
Propriétaire @Owner TABLE_SCHEMA 2
Table de charge de travail @Table TABLE_NAME 3
Colonne @Column COLUMN_NAME 4

Les vues

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog TABLE_CATALOG 1
Propriétaire @Owner TABLE_SCHEMA 2
Table de charge de travail @Table TABLE_NAME 3

ViewColumns

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog VIEW_CATALOG 1
Propriétaire @Owner VIEW_SCHEMA 2
Table de charge de travail @Table VIEW_NAME 3
Colonne @Column COLUMN_NAME 4

ProcedureParameters

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog SPECIFIC_CATALOG 1
Propriétaire @Owner SPECIFIC_SCHEMA 2
Nom @Name SPECIFIC_NAME 3
Paramètre @Parameter PARAMETER_NAME 4

Procédures

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog SPECIFIC_CATALOG 1
Propriétaire @Owner SPECIFIC_SCHEMA 2
Nom @Name SPECIFIC_NAME 3
Type @Type ROUTINE_TYPE 4

IndexColumns

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog db_name() 1
Propriétaire @Owner user_name() 2
Table de charge de travail @Table o.name 3
ConstraintName @ConstraintName x.name 4
Colonne @Column c.name 5

Index

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog db_name() 1
Propriétaire @Owner user_name() 2
Table de charge de travail @Table o.name 3

UserDefinedTypes

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Nom de restriction Nom du paramètre Valeur par défaut de la restriction Numéro de restriction
Catalogue @Catalog CONSTRAINT_CATALOG 1
Propriétaire @Owner CONSTRAINT_SCHEMA 2
Table de charge de travail @Table TABLE_NAME 3
Nom @Name CONSTRAINT_NAME 4

Voir aussi