다음을 통해 공유


스키마 제한

적용 대상: .NET Framework .NET .NET Standard

ADO.NET 다운로드

GetSchema 메서드의 두 번째 선택적 매개 변수는 반환되는 스키마 정보의 양을 제한하는 데 사용되는 제한이며, GetSchema 메서드에 문자열 배열로 전달됩니다. 배열의 위치는 전달할 수 있는 값을 결정하며 이 위치는 제한 번호와 동일합니다.

예를 들어 다음 표에는 SQL Server용 Microsoft SqlClient 데이터 공급자를 사용하는 "Table" 스키마 컬렉션에서 지원되는 제한에 대한 설명이 나와 있습니다. SQL Server 스키마 컬렉션의 추가 제한은 이 항목의 맨 마지막에 나열되어 있습니다.

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog TABLE_CATALOG 1
담당자 @Owner TABLE_SCHEMA 2
테이블 @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

제한 값 지정

"Tables" 스키마 컬렉션의 제한 중 하나를 사용하려면 네 가지 요소로 된 문자열 배열을 만든 다음 제한 번호와 일치하는 요소에 값을 지정하면 됩니다. 예를 들어 GetSchema 메서드에서 반환된 테이블을 "Sales" 스키마의 테이블로만 제한하려면 배열의 두 번째 요소를 "Sales"로 설정한 후 GetSchema 메서드에 전달합니다.

참고 항목

  • SqlClient의 제한 컬렉션에는 하나의 추가 ParameterName열이 있습니다. 제한 기본 열은 이전 버전과 여전히 호환되지만 현재는 무시됩니다. 문자열 대체보다는 매개 변수가 있는 쿼리를 사용하여 제한 값을 지정할 때 SQL 삽입 공격 위험을 최소화해야 합니다.
  • 배열의 요소 개수는 지정된 스키마 컬렉션에 대해 지원되는 제한 개수보다 작거나 같아야 합니다. 그렇지 않으면 ArgumentException이 throw됩니다. 제한의 최대 개수보다 작을 수 있으며 제한이 없으면 null(무제한)로 간주합니다.

SQL Server용 Microsoft SqlClient 데이터 공급자를 쿼리하여 제한 스키마 컬렉션의 이름 "Restrictions"와 함께 GetSchema 메서드를 호출하여 지원되는 제한 목록을 확인할 수 있습니다. 그러면 컬렉션 이름, 제한 이름, 기본 제한 값 및 제한 번호 목록과 함께 DataTable이 반환됩니다.

예시

다음 예제에서는 SQL Server 전용 Microsoft SqlClient 데이터 공급자 SqlConnection 클래스의 GetSchema 메서드를 사용하여 AdventureWorks 샘플 데이터베이스에 포함된 모든 테이블에 대한 스키마 정보를 검색하고 "Sales" 스키마에 포함된 테이블만 반환되도록 정보를 제한하는 방법을 보여 줍니다.

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 스키마 제한

다음 표에는 SQL Server 스키마 컬렉션의 제한이 나열되어 있습니다.

사용자

제한 이름 매개 변수 이름 제한 기본값 제한 번호
User_Name @Name 이름 1

데이터베이스

제한 이름 매개 변수 이름 제한 기본값 제한 번호
이름 @Name 이름 1

테이블

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog TABLE_CATALOG 1
담당자 @Owner TABLE_SCHEMA 2
테이블 @Name TABLE_NAME 3
TableType @TableType TABLE_TYPE 4

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog TABLE_CATALOG 1
담당자 @Owner TABLE_SCHEMA 2
테이블 @Table TABLE_NAME 3
Column @Column COLUMN_NAME 4

StructuredTypeMembers

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog TABLE_CATALOG 1
담당자 @Owner TABLE_SCHEMA 2
테이블 @Table TABLE_NAME 3
Column @Column COLUMN_NAME 4

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog TABLE_CATALOG 1
담당자 @Owner TABLE_SCHEMA 2
테이블 @Table TABLE_NAME 3

ViewColumns

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog VIEW_CATALOG 1
담당자 @Owner VIEW_SCHEMA 2
테이블 @Table VIEW_NAME 3
Column @Column COLUMN_NAME 4

ProcedureParameters

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog SPECIFIC_CATALOG 1
담당자 @Owner SPECIFIC_SCHEMA 2
이름 @Name SPECIFIC_NAME 3
매개 변수 @Parameter PARAMETER_NAME 4

절차

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog SPECIFIC_CATALOG 1
담당자 @Owner SPECIFIC_SCHEMA 2
이름 @Name SPECIFIC_NAME 3
Type @Type ROUTINE_TYPE 4

IndexColumns

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog db_name() 1
담당자 @Owner user_name() 2
테이블 @Table o.name 3
ConstraintName @ConstraintName x.name 4
Column @Column c.name 5

인덱스

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog db_name() 1
담당자 @Owner user_name() 2
테이블 @Table o.name 3

UserDefinedTypes

제한 이름 매개 변수 이름 제한 기본값 제한 번호
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

제한 이름 매개 변수 이름 제한 기본값 제한 번호
카탈로그 @Catalog CONSTRAINT_CATALOG 1
담당자 @Owner CONSTRAINT_SCHEMA 2
테이블 @Table TABLE_NAME 3
이름 @Name CONSTRAINT_NAME 4

참고 항목