Freigeben über


Schemaeinschränkungen

Gilt für: .NET Framework .NET .NET Standard

Herunterladen von ADO.NET

Bei dem zweiten optionalen Parameter der GetSchema-Methode handelt es sich um Einschränkungen, die zum Einschränken der Menge der zurückgegebenen Schemainformationen verwendet werden. Dieser Parameter wird als Zeichenfolgenarray an die GetSchema-Methode übergeben. Die Position im Array bestimmt die Werte, die zurückgegeben werden können. Dies entspricht der Anzahl der Einschränkungen.

In der folgenden Tabelle werden beispielsweise die Einschränkungen beschrieben, die von der Schemasammlung „Tables“ mit dem Microsoft-SqlClient-Datenanbieter für SQL Server unterstützt werden. Zusätzliche Einschränkungen für SQL Server-Schemaauflistungen werden am Ende dieses Themas aufgeführt.

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog TABLE_CATALOG 1
Besitzer @Owner TABLE_SCHEMA 2
Tabelle @Name table_name 3
TableType @TableType TABLE_TYPE 4

Festlegen von Einschränkungswerten

Wenn Sie eine der Einschränkungen der Tables-Schemaauflistung verwenden möchten, erstellen Sie ein Zeichenfolgenarray mit vier Elementen und fügen einen Wert in das Element ein, das mit der Einschränkungsnummer übereinstimmt. Legen Sie das zweite Element des Arrays auf „Sales“ fest, bevor Sie es an die GetSchema-Methode übergeben, um beispielsweise die Tabellen einzuschränken, die von der GetSchema-Methode an die Tabellen im Schema „Sales“ zurückgegeben werden.

Hinweis

  • Die Einschränkungssammlungen für SqlClient weisen eine zusätzliche ParameterName-Spalte auf. Die Spalte für den Einschränkungsstandard ist zwar aus Gründen der Abwärtskompatibilität vorhanden, wird aber derzeit ignoriert. Verwenden Sie Abfragen mit Parametern statt Zeichenfolgenersetzungen, um das Risiko eines SQL-Injection-Angriffs beim Angeben der Einschränkungswerte zu minimieren.
  • Die Anzahl der Elementen im Array muss kleiner oder gleich der Anzahl der Einschränkungen sein, die für die angegebene Schemaauflistung unterstützt werden, da sonst eine ArgumentException ausgelöst wird. Es können weniger Elemente als die maximale Anzahl der Einschränkungen vorhanden sein. Es wird davon ausgegangen, dass die fehlenden Einschränkungen NULL (uneingeschränkt) sind.

Sie können den Microsoft-SqlClient-Datenanbieter für SQL Server abfragen, um die Liste der unterstützten Einschränkungen zu ermitteln, indem Sie die GetSchema-Methode mit dem Namen der Schemasammlung für Einschränkungen aufrufen. Diese Name lautet „Restrictions“. Dabei wird eine DataTable mit einer Liste der Auflistungsnamen, Einschränkungsnamen, Standardeinschränkungswerte und der Anzahl der Einschränkungen zurückgegeben.

Beispiel

In den folgenden Beispielen wird veranschaulicht, wie die GetSchema-Methode der SqlConnection-Klasse des SqlClient-Datenanbieters für SQL Server verwendet wird, um Schemainformationen über alle in der Beispieldatenbank AdventureWorks enthaltenen Tabellen abzurufen und die zurückgegebenen Informationen auf die Tabellen im Schema „Sales“ einzuschränken:

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

SQL Server-Schemaeinschränkungen

In den folgenden Tabellen sind die Beschränkungen für SQL Server-Schemaauflistungen aufgeführt.

Benutzer

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
User_Name @Name name 1

Datenbanken

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Name @Name Name 1

Tabellen

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog TABLE_CATALOG 1
Besitzer @Owner TABLE_SCHEMA 2
Tabelle @Name table_name 3
TableType @TableType TABLE_TYPE 4

Spalten

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog TABLE_CATALOG 1
Besitzer @Owner TABLE_SCHEMA 2
Tabelle @Table table_name 3
Spalte @Column COLUMN_NAME 4

StructuredTypeMembers

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog TABLE_CATALOG 1
Besitzer @Owner TABLE_SCHEMA 2
Tabelle @Table table_name 3
Spalte @Column COLUMN_NAME 4

Sichten

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog TABLE_CATALOG 1
Besitzer @Owner TABLE_SCHEMA 2
Tabelle @Table table_name 3

ViewColumns

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog VIEW_CATALOG 1
Besitzer @Owner VIEW_SCHEMA 2
Tabelle @Table VIEW_NAME 3
Spalte @Column COLUMN_NAME 4

ProcedureParameters

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog SPECIFIC_CATALOG 1
Besitzer @Owner SPECIFIC_SCHEMA 2
Name @Name SPECIFIC_NAME 3
Parameter @Parameter PARAMETER_NAME 4

Prozeduren

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog SPECIFIC_CATALOG 1
Besitzer @Owner SPECIFIC_SCHEMA 2
Name @Name SPECIFIC_NAME 3
type @Type ROUTINE_TYPE 4

IndexColumns

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog db_name() 1
Besitzer @Owner user_name() 2
Tabelle @Table o.name 3
ConstraintName @ConstraintName x.name 4
Spalte @Column c.name 5

Indizes

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog db_name() 1
Besitzer @Owner user_name() 2
Tabelle @Table o.name 3

UserDefinedTypes

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Einschränkungsname Parametername Einschränkungsstandard Einschränkungsnummer
Katalog @Catalog CONSTRAINT_CATALOG 1
Besitzer @Owner CONSTRAINT_SCHEMA 2
Tabelle @Table table_name 3
Name @Name CONSTRAINT_NAME 4

Weitere Informationen: