쿼리 식 및 URNQuery Expressions and Uniform Resource Names

SMO( SQL ServerSQL Server Management Object) 모델 및 SQL ServerSQL Server PowerShell 스냅인은 XPath 식과 유사한 두 가지 유형의 식 문자열을 사용합니다.The SQL ServerSQL Server Management Object (SMO) models and SQL ServerSQL Server PowerShell snap-ins use two types of expression strings that are similar to XPath expressions. 쿼리 식은 개체 모델 계층 구조에 있는 하나 이상의 개체를 열거하는 데 사용되는 조건 집합을 지정하는 문자열입니다.Query expressions are strings that specify a set of criteria used to enumerate one or more objects in an object model hierarchy. URN(Uniform Resource Name)은 단일 개체를 고유하게 식별하는 특정 유형의 쿼리 식 문자열입니다.A Uniform Resource Name (URN) is a specific type of query expression string that uniquely identifies a single object.

구문Syntax


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>)  

인수Arguments

개체Object
식 문자열의 Object 노드에서 나타내는 개체 유형을 지정합니다.Specifies the type of object that is represented at that node of the expression string. 각 개체는 이러한 SMO 개체 모델 네임스페이스의 컬렉션 클래스를 나타냅니다.Each object represents a collection class from these SMO object model namespaces:

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 클래스에 대한 서버, DatabaseCollection 클래스에 대한 데이터베이스를 지정합니다.For example, specify Server for the ServerCollection class, Database for the DatabaseCollection class.

@PropertyName@PropertyName
Object에서 지정된 개체와 연결되는 클래스 속성 중 하나의 이름을 지정합니다.Specifies the name of one of the properties of the class that is associated with the object specified in Object. 속성 이름은 @ 문자로 시작해야 합니다.The name of the property must be prefixed with the @ character. 예를 들어 Database 클래스 속성인 IsAnsiNull에 대해 @IsAnsiNull을 지정합니다.For example, specify @IsAnsiNull for the Database class property IsAnsiNull.

@BooleanPropertyName=true()@BooleanPropertyName=true()
지정된 부울 속성이 TRUE로 설정된 개체를 모두 열거합니다.Enumerates all objects where the specified Boolean property is set to TRUE.

@BooleanPropertyName=false()@BooleanPropertyName=false()
지정된 부울 속성이 FALSE로 설정된 개체를 모두 열거합니다.Enumerates all objects where the specified Boolean property is set to FALSE.

contains(@StringPropertyName, 'PatternString')contains(@StringPropertyName, 'PatternString')
지정된 문자열 속성에 'PatternString'에 지정된 문자열 집합이 하나 이상 포함되어 있는 개체를 모두 열거합니다.Enumerates all objects where the specified string property contains at least one occurrence of the set of characters that is specified in 'PatternString'.

@StringPropertyName='PatternString'@StringPropertyName='PatternString'
지정된 문자열 속성 값이 'PatternString'에 지정된 문자 패턴과 정확하게 같은 개체를 모두 열거합니다.Enumerates all objects where the value of the specified string property is exactly the same as the character pattern that is specified in 'PatternString'.

@DatePropertyName= datetime('DateString')@DatePropertyName= datetime('DateString')
지정된 날짜 속성 값이 'DateString'에 지정된 날짜와 일치하는 개체를 모두 열거합니다.Enumerates all objects where the value of the specified date property matches the date that is specified in 'DateString'. DateString 은 yyyy-mm-dd hh:mi:ss.mmm 형식을 따라야 합니다.DateString must follow the format yyyy-mm-dd hh:mi:ss.mmm

yyyyyyyy 4자리 연도Four digit year.
mmmm 두 자리 월(01 - 12)Two digit month (01 through 12).
dddd 두 자리 날짜(01 - 31)Two digit date (01 through 31).
hhhh 24시간제를 사용하는 두 자리 시간(01 - 23)Two digit hour using a 24 hour clock (01 through 23).
mimi 두 자리 분(01 - 59)Two digit minutes (01 through 59).
ssss 두 자리 초(01 - 59)Two digit seconds (01 through 59).
mmmmmm 밀리초 수(001 - 999)Number of milliseconds (001 through 999).

이 형식으로 지정된 날짜를 SQL ServerSQL Server에 저장된 모든 날짜 형식에 대해 평가할 수 있습니다.The dates that are specified in this format can be evaluated against any date format that is stored in SQL ServerSQL Server.

is_null(@PropertyName)is_null(@PropertyName)
지정된 속성 값이 NULL인 개체를 모두 열거합니다.Enumerates all objects where the specified property has a value of NULL.

not(<PropertyExpression>)not(<PropertyExpression>)
PropertyExpression의 평가 값을 부정하고 PropertyExpression에 지정된 조건과 일치하지 않는 개체를 모두 열거합니다.Negates the evaluation value of the PropertyExpression, enumerating all objects that do not match the condition specified in PropertyExpression. 예를 들어 not(contains(@Name, 'xyz'))는 이름에 xyz 문자열이 없는 개체를 모두 열거합니다.For example, not(contains(@Name, 'xyz')) enumerates all objects that do not have the string xyz in their names.

주의Remarks

쿼리 식은 SMO 모델 계층 구조에 있는 노드를 열거하는 문자열입니다.Query expressions are strings that enumerate the nodes in an SMO model hierarchy. 각 노드에는 해당 노드에서 열거되는 개체를 결정하는 조건을 지정하는 필터 식이 있습니다.Each node has a filter expression that specifies the criteria for determining which objects at that node are enumerated. 쿼리 식은 XPath 식 언어에서 모델링됩니다.Query expressions are modeled on the XPath expression language. 쿼리 식은 XPath에서 지원하는 작은 식 집합을 구현하고 XPath에 없는 일부 확장도 포함합니다.Query expressions implement a small subset of the expressions that are supported by XPath, and also have some extensions that are not found in XPath. XPath 식은 XML 문서에서 하나 이상의 태그를 열거하는 데 사용되는 조건 집합을 지정하는 문자열입니다.XPath expressions are strings that specify a set of criteria that are used to enumerate one or more of the tags in an XML document. XPath에 대한 자세한 내용은 W3C XPath Language를 참조하십시오.For more information about XPath, see W3C XPath Language.

쿼리 식은 Server 개체에 대한 절대 참조로 시작해야 합니다.Query expressions must start with an absolute reference to the Server object. /로 시작하는 상대 식은 사용할 수 없습니다.Relative expressions with a leading / are not allowed. 쿼리 식에 지정된 개체 시퀀스는 관련 개체 모델에 있는 컬렉션 개체의 계층 구조를 따라야 합니다.The sequence of objects that are specified in a query expression must follow the hierarchy of collection objects in the associated object model. 예를 들어 Microsoft.SqlServer.Management.Smo 네임스페이스의 개체를 참조하는 쿼리 식은 Server 노드로 시작하고 그 다음에 Database 노드 등이 와야 합니다.For example, a query expression that references objects in the Microsoft.SqlServer.Management.Smo namespace must start with a Server node followed by a Database node, and so on.

개체에 대해 <FilterExpression>이 지정되지 않은 경우 해당 노드의 개체가 모두 열거됩니다.If a <FilterExpression> is not specified for an object, all the objects at that node are enumerated.

URN(Uniform Resource Name)Uniform Resource Names (URN)

URN은 쿼리 식의 하위 집합입니다.URNs are a subset of query expressions. 각 URN은 단일 개체에 대한 정규화된 참조를 형성합니다.Each URN forms a fully-qualified reference to a single object. 일반적인 URN에서는 Name 속성을 사용하여 각 노드의 단일 개체를 식별합니다.A typical URN uses the Name property to identify a single object at each node. 예를 들어 이 URN은 특정 열을 참조합니다.For example, this URN refers to a specific column:

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

Examples

1.A. false()를 사용하여 개체 열거Enumerating objects using false()

이 쿼리 식은 MyComputer 의 기본 인스턴스에서 AutoClose특성이 false로 설정된 데이터베이스를 모두 열거합니다.This query expression enumerates all the databases that have the AutoClose attribute set to false in the default instance on MyComputer.

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

2.B. contains를 사용하여 개체 열거Enumerating objects using contains

이 쿼리 식은 대/소문자를 구분하지 않고 이름에 'm' 문자가 있는 데이터베이스를 모두 열거합니다.This query expression enumerates all the databases that are case-insensitive and have the character 'm' in their name.

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

3.C. not을 사용하여 개체 열거Enumerating objects using not

이 쿼리 식은 AdventureWorks2012AdventureWorks2012 Production 스키마에 없으며 테이블 이름에 History라는 단어를 포함하는 테이블을 모두 열거합니다.This query expression enumerates all of AdventureWorks2012AdventureWorks2012 tables that are not in the Production schema and contain the word History in the table name:

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

4.D. 최종 노드에 대한 필터 식 제공 안 함Not supplying a filter expression for the final node

이 쿼리 식은 AdventureWorks2012.Sales.SalesPerson 테이블에서 모든 열을 열거합니다.This query expression enumerates all the columns in the AdventureWorks2012.Sales.SalesPerson table:

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

5.E. datetime을 사용하여 개체 열거Enumerating objects using datetime

이 쿼리 식은 특정 시간에 AdventureWorks2012AdventureWorks2012 데이터베이스에서 만든 테이블을 모두 열거합니다.This query expression enumerates all the tables that are created in the AdventureWorks2012AdventureWorks2012 database at a specific time:

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

6.F. is_null을 사용하여 개체 열거Enumerating objects using is_null

이 쿼리 식은 마지막 수정 날짜 속성에 대한 NULL이 없는 AdventureWorks2012AdventureWorks2012 데이터베이스의 테이블을 모두 열거합니다.This query expression enumerates all the tables in the AdventureWorks2012AdventureWorks2012 database that do not have NULL for their date last modified property:

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

참고 항목See Also

Invoke-PolicyEvaluation cmdlet Invoke-PolicyEvaluation cmdlet
SQL Server Audit(데이터베이스 엔진)SQL Server Audit (Database Engine)