Schemabegränsningar

Den andra valfria parametern för GetSchema metoden är de begränsningar som används för att begränsa mängden schemainformation som returneras. Den skickas till GetSchema metoden som en matris med strängar. Positionen i matrisen bestämmer de värden som du kan skicka, och detta motsvarar begränsningsnumret.

I följande tabell beskrivs till exempel de begränsningar som stöds av schemasamlingen "Tabeller" med hjälp av .NET Framework Data Provider för SQL Server. Ytterligare begränsningar för SQL Server-schemasamlingar visas i slutet av den här artikeln.

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Name TABELL_NAMN 3
Tabelltyp @TableType TABLE_TYPE 4

Ange begränsningsvärden

Om du vill använda en av begränsningarna i schemasamlingen Tabeller skapar du bara en matris med strängar med fyra element och placerar sedan ett värde i elementet som matchar begränsningsnumret. Om du till exempel vill begränsa de tabeller som returneras av GetSchema metoden till endast de tabellerna i schemat "Försäljning" anger du det andra elementet i matrisen till "Försäljning" innan du skickar det till GetSchema metoden.

Kommentar

Begränsningssamlingarna för SqlClient och OracleClient har en ytterligare kolumn ParameterName. Standardkolumnen för begränsning finns fortfarande för bakåtkompatibilitet, men ignoreras för närvarande. Parameteriserade frågor i stället för strängersättning bör användas för att minimera risken för en SQL-inmatningsattack när du anger begränsningsvärden.

Kommentar

Antalet element i matrisen måste vara mindre än eller lika med det antal begränsningar som stöds för den angivna schemasamlingen, annars genereras ett ArgumentException . Det kan finnas färre än det maximala antalet begränsningar. De saknade begränsningarna antas vara null (obegränsade).

Du kan fråga en .NET Framework-hanterad provider för att fastställa vilka begränsningar som stöds genom att anropa metoden GetSchema med namnet på schemasamlingen Begränsningar. Detta returnerar en DataTable med en lista över samlingsnamnen, begränsningsnamnen, standardbegränsningsvärdena och begränsningsnumren.

Exempel

Följande exempel visar hur du använder GetSchema metoden för .NET Framework-dataprovidern för SQL Server-klassen SqlConnection för att hämta schemainformation om alla tabeller som finns i exempeldatabasen AdventureWorks och för att begränsa den information som returneras till endast de tabellerna i "Sales"-schemat:

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

Begränsningar för SQL Server-schema

I följande tabeller visas begränsningarna för SQL Server-schemasamlingar.

Användare

Begränsningsnamn Parameternamn Standardinställning för begränsning Begränsningsnummer
Användarnamn @Name namn 1

Databaser

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Namn @Name Namn 1

Tabeller

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Name TABELL_NAMN 3
Tabelltyp @TableType TABLE_TYPE 4

Kolumner

Begränsningsnamn Parameternamn Standardinställning för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Table TABELL_NAMN 3
Kolumn @Column KOLUMN_NAMN 4

StruktureradeTypMedlemmar

Begränsningsnamn Parameternamn Standardinställning för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Table TABELL_NAMN 3
Kolumn @Column KOLUMN_NAMN 4

Vyer

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Table TABELL_NAMN 3

Visa kolumner

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog VIEW_CATALOG 1
Ägare @Owner VIEW_SCHEMA 2
Tabell @Table Visa_namn 3
Kolumn @Column KOLUMN_NAMN 4

Procedureparametrar

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog SPECIFIK_KATALOG 1
Ägare @Owner SPECIFIC_SCHEMA 2
Namn @Name SPECIFIC_NAME 3
Parameter @Parameter PARAMETER_NAME 4

Förfaranden

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog SPECIFIK_KATALOG 1
Ägare @Owner SPECIFIC_SCHEMA 2
Namn @Name SPECIFIC_NAME 3
Typ @Type TYP_AV_RUTIN 4

Indexkolumner

Begränsningsnamn Parameternamn Standardinställning för begränsning Begränsningsnummer
Katalog @Catalog db_name() 1
Ägare @Owner user_name() 2
Tabell @Table o.name 3
ConstraintName @ConstraintName x.name 4
Kolumn @Column c.name 5

Indexer

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog db_name() 1
Ägare @Owner user_name() 2
Tabell @Table o.name 3

Användardefinierade Typer

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
namn på sammansättning @AssemblyName församlingar.namn 1
udt_name @UDTName typer.samling_klass 2

ForeignKeys

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog Begränsningskatalog 1
Ägare @Owner Begränsningsschema 2
Tabell @Table TABELL_NAMN 3
Namn @Name BEGRÄNSNING_NAMN 4

Schemabegränsningar för SQL Server 2008

I följande tabeller visas begränsningarna för SQL Server 2008-schemasamlingar. Dessa begränsningar är giltiga från och med version 3.5 SP1 av .NET Framework och SQL Server 2008. De stöds inte i tidigare versioner av .NET Framework och SQL Server.

KolumnSättKolumner

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Table TABELL_NAMN 3

AllaKolumner

Begränsningsnamn Parameternamn Standard för begränsning Begränsningsnummer
Katalog @Catalog TABELL_KATALOG 1
Ägare @Owner BORD_SCHEMA 2
Tabell @Table TABELL_NAMN 3
Kolumn @Column KOLUMN_NAMN 4

Se även