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