쿼리 식 및 URN

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

SQL SMO(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>)  

인수

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 형식을 따라야 합니다.

DateString 복원 설명
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를 참조하십시오.

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

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

URN(Uniform Resource Name)

URN은 쿼리 식의 하위 집합입니다. 각 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을 사용하여 개체 열거

이 쿼리 식은 Production 스키마에 없고 테이블 이름에 History라는 단어가 포함된 모든 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을 사용하여 개체 열거

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

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

참고 항목