쿼리 식 및 URN

SMO(SQL Server Management Object) 모델 및 SQL Server PowerShell 스냅인은 XPath 식과 유사한 두 가지 유형의 식 문자열을 사용합니다. 쿼리 식은 개체 모델 계층 구조에 있는 하나 이상의 개체를 열거하는 데 사용되는 조건 집합을 지정하는 문자열입니다. URN(Uniform Resource Name)은 단일 개체를 고유하게 식별하는 특정 유형의 쿼리 식 문자열입니다.

구문

Object1[<FilterExpression1>]/ ... /ObjectN[<FilterExpressionN>]

<FilterExpression>::=
<PropertyExpression> [and <PropertyExpression>][...n]

<PropertyExpression>::=
      @BooleanPropertyName=true()
 | @BooleanPropertyName=false()
 | contains(@StringPropertyName, 'PatternString')
  | @StringPropertyName='String'
 | @DatePropertyName=datetime('DateString')
 | is_null(@PropertyName)
 | not(<PropertyExpression>)

인수

  • Object
    식 문자열의 Object 노드에서 나타내는 개체 유형을 지정합니다. 각 개체는 이러한 SMO 개체 모델 네임스페이스의 컬렉션 클래스를 나타냅니다.

    Microsoft.SqlServer.Management.Smo

    Microsoft.SqlServer.Management.Smo.Agent

    Microsoft.SqlServer.Management.Smo.Broker

    Microsoft.SqlServer.Management.Smo.Mail

    Microsoft.SqlServer.Management.Dmf

    Microsoft.SqlServer.Management.Facets

    Microsoft.SqlServer.Management.RegisteredServers

    Microsoft.SqlServer.Management.Smo.RegSvrEnum

    예를 들어 ServerCollection 클래스에 대해 Server를 지정하고, DatabaseCollection 클래스에 대해 Database를 지정합니다.

  • @PropertyName
    Object에 지정된 개체와 관련된 클래스의 속성 중 하나의 이름을 지정합니다. 속성 이름은 @ 문자로 시작해야 합니다. 예를 들어 Database 클래스 속성인 IsAnsiNull에 대해 @IsAnsiNull을 지정합니다.

  • @BooleanPropertyName=true()
    지정된 부울 속성이 TRUE로 설정된 개체를 모두 열거합니다.

  • @BooleanPropertyName=false()
    지정된 부울 속성이 FALSE로 설정된 개체를 모두 열거합니다.

  • contains(@StringPropertyName, 'PatternString')
    지정된 문자열 속성에 'PatternString'에 지정된 문자열 집합이 적어도 하나 이상 포함되어 있는 개체를 모두 열거합니다.

  • @StringPropertyName='PatternString'
    지정된 문자열 속성 값이 'PatternString'에 지정된 문자 패턴과 정확하게 같은 개체를 모두 열거합니다.

  • @DatePropertyName= datetime('DateString')
    지정된 날짜 속성 값이 'DateString'에 지정된 날짜와 일치하는 개체를 모두 열거합니다. DateString은 yyyy-mm-dd hh:mi:ss.mmm 형식을 따라야 합니다.

    yyyy

    4자리 연도

    mm

    두 자리 월(01 - 12)

    dd

    두 자리 날짜(01 - 31)

    hh

    24시간제를 사용하는 두 자리 시간(01 - 23)

    mi

    두 자리 분(01 - 59)

    ss

    두 자리 초(01 - 59)

    mmm

    밀리초 수(001 - 999)

    이 형식으로 지정된 날짜를 SQL Server에 저장된 모든 날짜 형식에 대해 평가할 수 있습니다.

  • is_null(@PropertyName)
    지정된 속성 값이 NULL인 개체를 모두 열거합니다.

  • not(<PropertyExpression>)
    PropertyExpression의 평가 값을 부정하고 PropertyExpression에 지정된 조건과 일치하지 않는 개체를 모두 열거합니다. 예를 들어 not(contains(@Name, 'xyz'))는 이름에 xyz 문자열이 없는 개체를 모두 열거합니다.

주의

쿼리 식은 SMO 모델 계층 구조에 있는 노드를 열거하는 문자열입니다. 각 노드에는 해당 노드에서 열거되는 개체를 결정하는 조건을 지정하는 필터 식이 있습니다. 쿼리 식은 XPath 식 언어에서 모델링됩니다. 쿼리 식은 XPath에서 지원하는 작은 식 집합을 구현하고 XPath에 없는 일부 확장도 포함합니다. XPath 식은 XML 문서에서 하나 이상의 태그를 열거하는 데 사용되는 조건 집합을 지정하는 문자열입니다. XPath에 대한 자세한 내용은 W3C XPath Language를 참조하십시오.

쿼리 식은 Server 개체에 대한 절대 참조로 시작해야 합니다. /로 시작하는 상대 식은 사용할 수 없습니다. 쿼리 식에 지정된 개체 시퀀스는 관련 개체 모델에 있는 컬렉션 개체의 계층 구조를 따라야 합니다. 예를 들어 Microsoft.SqlServer.Management.Smo 네임스페이스의 개체를 참조하는 쿼리 식은 Server 노드로 시작하고 그 다음에 Database 노드 등이 와야 합니다.

개체에 대해 <FilterExpression>이 지정되지 않은 경우 해당 노드의 개체가 모두 열거됩니다.

URN(Uniform Resource Name)

URN은 쿼리 식의 하위 집합입니다. 각 URN은 단일 개체에 대한 정규화된 참조를 형성합니다. 일반적인 URN에서는 Name 속성을 사용하여 각 노드의 단일 개체를 식별합니다. 예를 들어 이 URN은 특정 열을 참조합니다.

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']/Table[@Name='SalesPerson' and @Schema='Sales']/Column[@Name='SalesPersonID']

1.false()를 사용하여 개체 열거

이 쿼리 식은 MyComputer의 기본 인스턴스에서 AutoClose 특성이 false로 설정된 데이터베이스를 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@AutoClose=false()]

2.contains를 사용하여 개체 열거

이 쿼리 식은 대/소문자를 구분하지 않고 이름에 'm' 문자가 있는 데이터베이스를 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@CaseSensitive=false() and contains(@Name, 'm')] 

3.not을 사용하여 개체 열거

이 쿼리 식은 Production 스키마에 없으며 테이블 이름에 History라는 단어를 포함하는 AdventureWorks2012 테이블을 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']/Table[not(@Schema='Production') and contains(@Name, 'History')]

4.최종 노드에 대한 필터 식 제공 안 함

이 쿼리 식은 AdventureWorks2012.Sales.SalesPerson 테이블의 열을 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012"]/Table[@Schema='Sales' and @Name='SalesPerson']/Columns

5.datetime을 사용하여 개체 열거

이 쿼리 식은 특정 시간에 AdventureWorks2012 데이터베이스에서 만든 테이블을 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012"]/Table[@CreateDate=datetime('2008-03-21 19:49:32.647')]

6.is_null을 사용하여 개체 열거

이 쿼리 식은 마지막 수정 날짜 속성에 대한 NULL이 없는 AdventureWorks2012 데이터베이스의 테이블을 모두 열거합니다.

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012"]/Table[Not(is_null(@DateLastModified))]

참고 항목

개념

Invoke-PolicyEvaluation cmdlet

SQL Server Audit(데이터베이스 엔진)