Compartir a través de


Restricciones de esquema

El segundo parámetro opcional del método GetSchema son las restricciones que se utilizan para limitar la cantidad de información de esquema devuelta. 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" utilizando el proveedor de datos .NET Framework para SQL Server. Las restricciones adicionales para las colecciones de esquemas de SQL Server aparecen al final de este artículo.

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
TipoDeTabla @TableType TIPO_DE_TABLA 4

Especificación de los 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 con restricciones para SqlClient y OracleClient 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. Para reducir el riesgo de un ataque de inyección de SQL al especificar valores de restricción, es necesario utilizar consultas parametrizadas en lugar de sustitución de cadenas.

Nota

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 un proveedor administrado de .NET Framework para 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 utilizar el método GetSchema del proveedor de datos .NET Framework para la clase SqlConnection de SQL Server para 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 a solo las tablas del esquema "Sales":

Imports System.Data.SqlClient

Module Module1
Sub Main()
  Dim connectionString As String = "...";

  Dim restrictions(3) As String
  Using connection As New SqlConnection(connectionString)
    connection.Open()

    'Specify the restrictions.
    restrictions(1) = "Sales"
    Dim table As DataTable = connection.GetSchema("Tables", _
       restrictions)

    ' Display the contents of the table.
      For Each row As DataRow In table.Rows
         For Each col As DataColumn In table.Columns
            Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
         Next
         Console.WriteLine("============================")
      Next
    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
  End Using
End Sub
End Module
using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
  static void Main()
  {
    string connectionString ="...";
    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.
        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("============================");
        }
        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
Nombre_de_Usuario @Name nombre 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
TipoDeTabla @TableType TIPO_DE_TABLA 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 nombre de columna 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 nombre de columna 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 VER_CATÁLOGO 1
Propietario @Owner ESQUEMA_DE_VISTA 2
Tabla @Table VIEW_NAME 3
Columna @Column nombre de columna 4

Parámetros del Procedimiento

Nombre de la restricción Nombre de parámetro Valor predeterminado de la restricción Número de restricciones
Catálogo @Catalog CATÁLOGO_ESPECÍFICO 1
Propietario @Owner ESQUEMA_ESPECÍFICO 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 CATÁLOGO_ESPECÍFICO 1
Propietario @Owner ESQUEMA_ESPECÍFICO 2
Nombre @Name SPECIFIC_NAME 3
Tipo @Type TIPO_DE_RUTINA 4

Columnas de Índice

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

TiposDefinidosPorElUsuario

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 CATÁLOGO_DE_RESTRICCIONES 1
Propietario @Owner esquema de restricción (CONSTRAINT_SCHEMA) 2
Tabla @Table TABLE_NAME 3
Nombre @Name CONSTRAINT_NAME 4

Restricciones de esquema de SQL Server 2008

En la tabla siguiente se muestran las restricciones de las colecciones de esquemas de SQL Server 2008. Estas restricciones son válidas a partir de la versión 3.5 SP1 de .NET Framework y SQL Server 2008. No se admiten en versiones anteriores de .NET Framework y SQL Server.

ColumnSetColumns

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

AllColumns

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 nombre de columna 4

Consulte también