Aracılığıyla paylaş


Şema kısıtlamaları

Şunlar için geçerlidir: .NET Framework .NET .NET Standard

ADO.NET indirin

GetSchema yönteminin ikinci isteğe bağlı parametresi, döndürülen şema bilgisi miktarını sınırlamak için kullanılan kısıtlamalardır ve getSchema yöntemine dize dizisi olarak geçirilir. Dizideki konum geçirebileceğiniz değerleri belirler ve bu, kısıtlama numarasına eşdeğerdir.

Örneğin, aşağıdaki tabloda SQL Server için Microsoft SqlClient Veri Sağlayıcısı kullanılarak "Tablolar" şema koleksiyonu tarafından desteklenen kısıtlamalar açıklanmaktadır. SQL Server şema koleksiyonları için ek kısıtlamalar bu konunun sonunda listelenir.

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog Tablo_Katalog 1
Sahibi @Owner Tablo Şeması 2
Tablo @Name TABLE_NAME 3
Tablo Türü @TableType TABLO_TİPİ 4

Kısıtlama değerlerini belirtme

"Tablolar" şema koleksiyonunun kısıtlamalarından birini kullanmak için, dört öğe içeren bir dize dizisi oluşturun ve ardından öğeye kısıtlama numarasıyla eşleşen bir değer yerleştirin. Örneğin, GetSchema yöntemi tarafından döndürülen tabloları yalnızca "Sales" şemasındaki tablolarla kısıtlamak için, dizinin ikinci öğesini GetSchema yöntemine geçirmeden önce "Sales" olarak ayarlayın.

Uyarı

  • SqlClient için kısıtlama koleksiyonlarının ek bir ParameterName sütunu vardır. Kısıtlama varsayılan sütunu geriye dönük uyumluluk için hala oradadır, ancak şu anda yoksayılır. Kısıtlama değerleri belirtilirken SQL ekleme saldırısı riskini en aza indirmek için dize değiştirme yerine parametreli sorgular kullanılmalıdır.
  • Dizideki öğe sayısı, belirtilen şema koleksiyonu için desteklenen kısıtlamaların sayısından küçük veya buna eşit olmalıdır, aksi takdirde bir ArgumentException oluşturulur. Maksimum kısıtlama sayısından daha az olabilir. Eksik kısıtlamaların null (sınırsız) olduğu varsayılır.

Sql Server için Microsoft SqlClient Veri Sağlayıcısı'nı sorgulayarak desteklenen kısıtlamaların listesini belirlemek için GetSchema yöntemini kısıtlamalar şeması koleksiyonunun adıyla (yani "Kısıtlamalar" olarak adlandırarak) belirleyebilirsiniz. Bu, koleksiyon adlarının, kısıtlama adlarının, varsayılan kısıtlama değerlerinin ve kısıtlama numaralarının listesini içeren bir DataTable döndürür.

Example

Aşağıdaki örneklerdeGetSchema örnek veritabanında yer alan tüm tablolarla ilgili şema bilgilerini almak ve döndürülen bilgileri yalnızca "Sales" şemasındaki tablolarla kısıtlamak için SQL Server SqlConnection sınıfı için Microsoft SqlClient Veri Sağlayıcısı yönteminin nasıl kullanılacağı gösterilmektedir:

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 şema kısıtlamaları

Aşağıdaki tablolarda SQL Server şema koleksiyonları için kısıtlamalar listelenmiştir.

Users

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Kullanıcı_Adı @Name name 1

Databases

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
İsim @Name İsim 1

Tables

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog Tablo_Katalog 1
Sahibi @Owner Tablo Şeması 2
Tablo @Name TABLE_NAME 3
Tablo Türü @TableType TABLO_TİPİ 4

Kolonlar

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog Tablo_Katalog 1
Sahibi @Owner Tablo Şeması 2
Tablo @Table TABLE_NAME 3
Köşe yazısı @Column COLUMN_NAME 4

YapılandırılmışTürÜyeleri

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog Tablo_Katalog 1
Sahibi @Owner Tablo Şeması 2
Tablo @Table TABLE_NAME 3
Köşe yazısı @Column COLUMN_NAME 4

İzlenimler

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog Tablo_Katalog 1
Sahibi @Owner Tablo Şeması 2
Tablo @Table TABLE_NAME 3

Sütunları Görüntüle

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog KATALOĞU GÖRÜNTÜLE 1
Sahibi @Owner VIEW_SCHEMA 2
Tablo @Table GÖRÜNÜM_ADI 3
Köşe yazısı @Column COLUMN_NAME 4

Prosedür Parametreleri

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog ÖZEL_KATALOG 1
Sahibi @Owner SPESİFİK ŞEMA 2
İsim @Name SPECIFIC_NAME 3
Parametre @Parameter PARAMETER_NAME 4

Procedures

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog ÖZEL_KATALOG 1
Sahibi @Owner SPESİFİK ŞEMA 2
İsim @Name SPECIFIC_NAME 3
Türü @Type ROUTINE_TYPE 4

Dizin Sütunları

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog db_name() 1
Sahibi @Owner user_name() 2
Tablo @Table o.name 3
ConstraintName @ConstraintName x.name 4
Köşe yazısı @Column c.name 5

Indexes

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog db_name() 1
Sahibi @Owner user_name() 2
Tablo @Table o.name 3

Kullanıcı Tanımlı Türler

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
montaj_adı @AssemblyName montajlar.adı 1
udt_name @UDTName türler.montaj_sınıfı 2

Yabancı Anahtarlar

Kısıtlama Adı Parametre Adı Kısıtlama Varsayılanı Kısıtlama Numarası
Catalog @Catalog KISIT_KATALOĞU 1
Sahibi @Owner KISIT ŞEMASI 2
Tablo @Table TABLE_NAME 3
İsim @Name CONSTRAINT_NAME 4

Ayrıca bakınız

  • SQL Server için Microsoft ADO.NET