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, welche Werte Sie übergeben können, und dies entspricht der Nummer der Einschränkung.
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 |
| Tabellentyp |
@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. Um beispielsweise die von der GetSchema-Methode zurückgegebenen Tabellen auf die Tabellen im Schema „Sales“ zu beschränken, legen Sie vor der Übergabe an die GetSchema-Methode das zweite Element des Arrays auf „Sales“ fest.
Hinweis
- Die Einschränkungssammlungen für
SqlClient weisen eine zusätzliche ParameterName-Spalte auf. Die Standardspalte für die Einschränkung ist weiterhin zur Rückwärtskompatibilität vorhanden, wird aber derzeit ignoriert. Parametrisierte Abfragen sollten anstelle der Zeichenfolgenersetzung verwendet werden, um das Risiko eines Angriff durch Einschleusung von SQL-Befehlen beim Angeben von Einschränkungswerten 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 kann weniger als die maximale Anzahl an Einschränkungen geben. 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 ein DataTable mit einer Liste der Sammlungsnamen, der Einschränkungsnamen, der Standardwerte für Einschränkungen und der Einschränkungsnummern 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 |
| Tabellentyp |
@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 |
Mitglieder strukturierter Typen
| 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 |
Ansichten
| Einschränkungsname |
Parametername |
Einschränkungsstandard |
Einschränkungsnummer |
| Katalog |
@Catalog |
TABLE_CATALOG |
1 |
| Besitzer |
@Owner |
TABLE_SCHEMA |
2 |
| Tabelle |
@Table |
table_name |
3 |
Spalten anzeigen
| Einschränkungsname |
Parametername |
Einschränkungsstandard |
Einschränkungsnummer |
| Katalog |
@Catalog |
KATALOG ANZEIGEN |
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 |
| Typ |
@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 |
Benutzerdefinierte Typen
| 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 |
Verwandte Inhalte