Compartir a través de


Restricciones de esquema

Se aplica a: .NET Framework .NET .NET Standard

Descargar ADO.NET

El segundo parámetro opcional del método GetSchema son las restricciones que se usan para limitar la cantidad de información de esquema devuelta. Este parámetro se pasa al método GetSchema como una matriz de cadenas. La posición en la matriz determina los valores que puede pasar, y es equivalente al número de restricciones.

Por ejemplo, en la tabla siguiente se describen las restricciones que admite la colección de esquemas "Tables" mediante el proveedor de datos SqlClient de Microsoft para SQL Server. Las restricciones adicionales para las colecciones de esquemas de SQL Server se muestran al final de este tema.

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog TABLE_CATALOG 1
Propietario @Owner TABLE_SCHEMA 2
Tabla @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Especificación de valores de restricción

Para utilizar una de las restricciones de la colección de esquemas "Tables", basta con crear una matriz de cadenas con cuatro elementos y, después, colocar un valor en el elemento que coincida con el número de restricción. Por ejemplo, para restringir las tablas devueltas por el método GetSchema solo a las del esquema "Sales", establezca el segundo elemento de la matriz en "Sales" antes de pasarlo al método GetSchema.

Nota

  • Las colecciones de restricciones para SqlClient tienen una columna ParameterName adicional. La columna de valor predeterminado de restricción sigue ahí para la compatibilidad con versiones anteriores, pero actualmente se omite. Las consultas con parámetros en lugar de la sustitución de cadenas deben usarse para minimizar el riesgo de un ataque por inyección de CÓDIGO SQL al especificar valores de restricción.
  • El número de elementos de la matriz debe ser menor o igual que el número de restricciones admitidas en la colección de esquemas especificada o se iniciará una ArgumentException. Puede haber un número de restricciones inferior al máximo. Se supone que las restricciones que faltan serán nulas (sin restricciones).

Puede consultar el proveedor de datos SqlClient de Microsoft para SQL Server a fin de determinar la lista de restricciones admitidas mediante la llamada al método GetSchema con el nombre de la colección de esquemas con restricciones, que es "Restrictions". Esto devolverá una DataTable con una lista de los nombres de colecciones, los nombres de restricciones, los valores predeterminados de restricción y los números de restricciones.

Ejemplo

En los ejemplos siguientes se muestra cómo usar el método GetSchema de la clase SqlConnection del proveedor de datos SqlClient de Microsoft para SQL Server a fin de recuperar información de esquema de todas las tablas contenidas en la base de datos de ejemplo AdventureWorks, y para restringir la información devuelta solo a las tablas del 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("============================");
        }
    }
}

Restricciones de esquema de SQL Server

En la tabla siguiente se muestran las restricciones de las colecciones de esquemas de SQL Server.

Usuarios

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
User_Name @Name name 1

Bases de datos

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Nombre @Name Nombre 1

Tablas

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog TABLE_CATALOG 1
Propietario @Owner TABLE_SCHEMA 2
Tabla @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

Columnas

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog TABLE_CATALOG 1
Propietario @Owner TABLE_SCHEMA 2
Tabla @Table TABLE_NAME 3
Columna @Column COLUMN_NAME 4

StructuredTypeMembers

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog TABLE_CATALOG 1
Propietario @Owner TABLE_SCHEMA 2
Tabla @Table TABLE_NAME 3
Columna @Column COLUMN_NAME 4

Vistas

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog TABLE_CATALOG 1
Propietario @Owner TABLE_SCHEMA 2
Tabla @Table TABLE_NAME 3

ViewColumns

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog VIEW_CATALOG 1
Propietario @Owner VIEW_SCHEMA 2
Tabla @Table VIEW_NAME 3
Columna @Column COLUMN_NAME 4

ProcedureParameters

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog SPECIFIC_CATALOG 1
Propietario @Owner SPECIFIC_SCHEMA 2
Nombre @Name SPECIFIC_NAME 3
Parámetro @Parameter PARAMETER_NAME 4

Procedimientos

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog SPECIFIC_CATALOG 1
Propietario @Owner SPECIFIC_SCHEMA 2
Nombre @Name SPECIFIC_NAME 3
Tipo @Type ROUTINE_TYPE 4

IndexColumns

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog db_name() 1
Propietario @Owner user_name() 2
Tabla @Table o.name 3
ConstraintName @ConstraintName x.name 4
Columna @Column c.name 5

Índices

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog db_name() 1
Propietario @Owner user_name() 2
Tabla @Table o.name 3

UserDefinedTypes

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog CONSTRAINT_CATALOG 1
Propietario @Owner CONSTRAINT_SCHEMA 2
Tabla @Table TABLE_NAME 3
Nombre @Name CONSTRAINT_NAME 4

Consulte también