다음을 통해 공유


쿼리 식 및 균일한 리소스 이름

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

비고

두 개의 SQL Server PowerShell 모듈이 있습니다. SqlServerSQLPS.

SqlServer 모듈은 사용할 현재 PowerShell 모듈입니다.

SQLPS 모듈은 이전 버전과의 호환성을 위해 SQL Server 설치에 포함되어 있지만 더 이상 업데이트되지 않습니다.

SqlServer 모듈에는 SQLPS의 업데이트된 버전의 cmdlet이 포함되어 있으며 최신 SQL 기능을 지원하는 새 cmdlet이 포함되어 있습니다.

PowerShell 갤러리에서 SqlServer 모듈을 설치합니다.

자세한 내용은 SQL Server PowerShell을 참조하세요.

문법

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

주장들

객체
식 문자열의 해당 노드에 표시되는 개체의 형식을 지정합니다. 각 개체는 다음 SMO 개체 모델 네임스페이스의 컬렉션 클래스를 나타냅니다.

<xref:Microsoft.SqlServer.Management.Smo>
<xref:Microsoft.SqlServer.Management.Smo.Agent>
<xref:Microsoft.SqlServer.Management.Smo.Broker>
<xref:Microsoft.SqlServer.Management.Smo.Mail>
<xref:Microsoft.SqlServer.Management.Dmf>
<xref:Microsoft.SqlServer.Management.Facets>
<xref:Microsoft.SqlServer.Management.RegisteredServers>
<xref:Microsoft.SqlServer.Management.Smo.RegSvrEnum>

예를 들어 ServerCollection 클래스의 Server, DatabaseCollection 클래스의 데이터베이스를 지정합니다.

@ PropertyName
Object에 지정된 개체와 연결된 클래스의 속성 중 하나의 이름을 지정 합니다. 속성의 이름 앞에 @문자가 와야 합니다. 예를 들어 데이터베이스 클래스 속성 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 형식을 따라야 합니다.

DateString 구성 요소 설명
yyyy 4자리 연도입니다.
밀리미터 두 자리 월(01~12)입니다.
dd 두 자리 날짜(01~31).
ㅎㅎ 24시간 시계를 사용하는 두 자리 시간(01~23).
마일 두 자리 분(01부터 59까지).
ss 두 자리 초(01~59).
밀리초(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 언어를 참조하세요.

쿼리 식은 서버 개체에 대한 절대 참조로 시작해야 합니다. 슬래시(/)로 시작하는 상대 표현은 허용되지 않습니다. 쿼리 식에 지정된 개체의 시퀀스는 연결된 개체 모델의 컬렉션 개체 계층 구조를 따라야 합니다. 예를 들어 Microsoft.SqlServer.Management.Smo 네임스페이스의 개체를 참조하는 쿼리 식은 서버 노드와 데이터베이스 노드 등으로 시작해야 합니다.

개체에 <대해 FilterExpression> 을 지정하지 않으면 해당 노드의 모든 개체가 열거됩니다.

URN(Uniform Resource Names)

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

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

예시

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

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

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

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

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

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

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

이 쿼리 식은 AdventureWorks2022 스키마에 없는 모든 테이블을 열거하고 테이블 이름에 기록이라는 단어를 포함합니다.

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

D. 최종 노드에 대한 필터 식을 제공하지 않음

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

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

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

이 쿼리 식은 특정 시간에 데이터베이스에 AdventureWorks2022 생성된 모든 테이블을 열거합니다.

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

F. is_null 사용하여 개체 열거

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

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