Schemabeperkingen

De tweede optionele parameter van de GetSchema methode is de beperkingen die worden gebruikt om de hoeveelheid geretourneerde schemagegevens te beperken. Deze wordt doorgegeven aan de GetSchema methode als een matrix met tekenreeksen. De positie in de matrix bepaalt de waarden die u kunt doorgeven en dit is gelijk aan het beperkingsnummer.

In de volgende tabel worden bijvoorbeeld de beperkingen beschreven die worden ondersteund door de schemaverzameling Tabellen met behulp van .NET Framework Data Provider voor SQL Server. Aanvullende beperkingen voor SQL Server-schemaverzamelingen worden aan het einde van dit artikel vermeld.

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Name TABELNAAM 3
Tabeltype @TableType TABLE_TYPE 4

Beperkingswaarden opgeven

Als u een van de beperkingen van de schemaverzameling Tabellen wilt gebruiken, maakt u gewoon een matrix met tekenreeksen met vier elementen en plaatst u vervolgens een waarde in het element dat overeenkomt met het beperkingsnummer. Als u bijvoorbeeld de tabellen wilt beperken die door de GetSchema methode worden geretourneerd tot alleen die tabellen in het schema Verkoop, stelt u het tweede element van de matrix in op Verkoop voordat u deze doorgeeft aan de GetSchema methode.

Notitie

De beperkingenverzamelingen voor SqlClient en OracleClient hebben een extra ParameterName kolom. De standaardkolom voor beperkingen is er nog steeds voor achterwaartse compatibiliteit, maar wordt momenteel genegeerd. Geparameteriseerde query's in plaats van tekenreeksvervanging moeten worden gebruikt om het risico van een SQL-injectieaanval te minimaliseren bij het opgeven van beperkingswaarden.

Notitie

Het aantal elementen in de matrix moet kleiner zijn dan of gelijk zijn aan het aantal beperkingen dat wordt ondersteund voor de opgegeven schemaverzameling, anders wordt er een ArgumentException gegenereerd. Er kunnen minder beperkingen zijn dan het maximumaantal beperkingen. De ontbrekende beperkingen worden verondersteld null te zijn (onbeperkt).

U kunt een door .NET Framework beheerde provider opvragen om de lijst met ondersteunde beperkingen te bepalen door de GetSchema methode aan te roepen met de naam van de beperkingenschemaverzameling, wat 'Beperkingen' is. Hiermee wordt een DataTable lijst met de verzamelingsnamen, de beperkingsnamen, de standaardbeperkingswaarden en de beperkingsnummers geretourneerd.

Voorbeeld

In de volgende voorbeelden ziet u hoe u de GetSchema methode van de .NET Framework-gegevensprovider voor de SQL Server-klasse SqlConnection gebruikt om schemagegevens op te halen over alle tabellen in de AdventureWorks voorbeelddatabase en om de informatie te beperken die alleen naar die tabellen in het schema Verkoop wordt geretourneerd:

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("============================");
     }
  }
}

Schemabeperkingen voor SQL Server

De volgende tabellen bevatten de beperkingen voor SQL Server-schemaverzamelingen.

Gebruikers

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Gebruikersnaam @Name naam 1

Databanken

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Naam @Name Naam 1

Tabellen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Name TABELNAAM 3
Tabeltype @TableType TABLE_TYPE 4

Kolommen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Table TABELNAAM 3
Kolom @Column Kolomnaam 4

GestructureerdeTypeleden

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Table TABELNAAM 3
Kolom @Column Kolomnaam 4

Weergaven

Beperkingsnaam Parameternaam Standaard beperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Table TABELNAAM 3

BekijkKolommen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog BEKIJK_CATALOGUS 1
Eigenaar @Owner VIEW_SCHEMA 2
Tabel @Table BEKIJK_NAAM 3
Kolom @Column Kolomnaam 4

ProcedureParameters

Beperkingsnaam Parameternaam Standaardbeperking Beperkingnummer
Catalogus @Catalog Specifieke_catalogus 1
Eigenaar @Owner SPECIFIC_SCHEMA 2
Naam @Name SPECIFIC_NAME 3
Kenmerk @Parameter PARAMETER_NAME 4

Werkwijzen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog Specifieke_catalogus 1
Eigenaar @Owner SPECIFIC_SCHEMA 2
Naam @Name SPECIFIC_NAME 3
Typologie @Type ROUTINE_TYPE 4

IndexKolommen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog db_name() 1
Eigenaar @Owner user_name() 2
Tabel @Table o.name 3
ConstraintName @ConstraintName x.name 4
Kolom @Column c.name 5

Indexen

Beperkingsnaam Parameternaam Standaard voor beperkende instelling Beperkingsnummer
Catalogus @Catalog db_name() 1
Eigenaar @Owner user_name() 2
Tabel @Table o.name 3

GebruikersgedefinieerdeTypen

Beperkingsnaam Parameternaam Beperking Standaardinstelling Beperkingsnummer
assemblage_naam @AssemblyName assemblies.name 1
udt_name @UDTName typen.samenstellingsklasse 2

ForeignKeys

Beperkingsnaam Parameternaam Standaardbeperking Beperkings-ID
Catalogus @Catalog CONSTRAINT_CATALOG 1
Eigenaar @Owner CONSTRAINT_SCHEMA 2
Tabel @Table TABELNAAM 3
Naam @Name CONSTRAINT_NAAM 4

Schemabeperkingen voor SQL Server 2008

De volgende tabellen bevatten de beperkingen voor SQL Server 2008-schemaverzamelingen. Deze beperkingen zijn geldig vanaf versie 3.5 SP1 van .NET Framework en SQL Server 2008. Ze worden niet ondersteund in eerdere versies van .NET Framework en SQL Server.

KolomSetKolommen

Beperkingsnaam Parameternaam Standaardbeperking Beperkingscode
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Table TABELNAAM 3

AllColumns

Beperkingsnaam Parameternaam Standaardbeperking Beperkingsnummer
Catalogus @Catalog TABEL_CATALOGUS 1
Eigenaar @Owner TABEL_SCHEMA 2
Tabel @Table TABELNAAM 3
Kolom @Column Kolomnaam 4

Zie ook