Поделиться через


Выражения запросов и универсальные имена ресурсов

Модели объектов управления SQL Server и оснастки SQL Server PowerShell используют два типа строк выражений, аналогичных выражениям XPath. Выражения запросов — это строки, определяющие набор критериев, используемых для перечисления одного или нескольких объектов в иерархии объектной модели. Универсальное имя ресурса (URN) — это конкретный тип строки выражения запроса, которая однозначно идентифицирует один объект.

Синтаксис

      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:

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

Например, укажите Server для класса ServerCollection , Database для класса DatabaseCollection .

@ PropertyName
Указывает имя одного из свойств класса, связанного с объектом, указанным в объекте. Имя свойства должно быть префиксировано символом @. Например, укажите @IsAnsiNull для свойства класса DatabaseIsAnsiNull.

@ BooleanPropertyName=true()
Перечисляет все объекты, в которых указанное логическое свойство имеет значение TRUE.

@ BooleanPropertyName=false()
Перечисляет все объекты, в которых указанное логическое свойство имеет значение FALSE.

contains(@StringPropertyName, PatternString)
Перечисляет все объекты, в которых указанное строковое свойство содержит по крайней мере одно вхождение набора символов, указанного в PatternString.

@ StringPropertyName='PatternString'
Перечисляет все объекты, где значение указанного строкового свойства точно совпадает с шаблоном символов, указанным в PatternString.

@ DatePropertyName= datetime('DateString')
Перечисляет все объекты, в которых значение указанного свойства даты соответствует дате, указанной в dateString. DateString должен соответствовать формату YYYY-mm-dd чч:мм:сс.мсс

гггг Год в формате четырёх цифр.
мм Двухзначный месяц (от 01 до 12).
дд Две цифры даты (01–31).
Чч Двухзначный час с использованием 24 часов (01–23).
миля Двузначные минуты (от 01 до 59).
ss Две цифры секунд (от 01 до 59).
Ммм Число миллисекунда (001–999).

Даты, указанные в этом формате, можно оценить с любым форматом дат, хранящимся в SQL Server.

is_null(@PropertyName)
Перечисляет все объекты, в которых указанное свойство имеет значение NULL.

не(<PropertyExpression>)
Отрицает значение оценки свойства PropertyExpression, перечисляя все объекты, которые не соответствуют условию, указанному в PropertyExpression. Например, not(contains(@Name, xyz)) перечисляет все объекты, которые не имеют строки xyz в их именах.

Замечания

Выражения запросов — это строки, перечисляющие узлы в иерархии модели SMO. Каждый узел имеет выражение фильтра, указывающее критерии определения объектов на этом узле. Выражения запросов моделиируются на языке выражений XPath. Выражения запросов реализуют небольшое подмножество выражений, поддерживаемых XPath, а также имеют некоторые расширения, которые не найдены в XPath. Выражения XPath — это строки, которые указывают набор критериев, используемых для перечисления одного или нескольких тегов в XML-документе. Дополнительные сведения о XPath см. в разделе W3C XPath Language.

Выражения запросов должны начинаться с абсолютной ссылки на объект Server. Относительные выражения с ведущим / не допускаются. Последовательность объектов, указанных в выражении запроса, должна соответствовать иерархии объектов коллекции в связанной объектной модели. Например, выражение запроса, которое ссылается на объекты в пространстве имен Microsoft.SqlServer.Management.Smo, должно начинаться с узла сервера, за которым следует узел базы данных и т. д.

Если параметр< FilterExpression> не указан для объекта, перечисляются все объекты на этом узле.

Универсальные имена ресурсов (URN)

URN — это подмножество выражений запросов. Каждый URN формирует полную ссылку на один объект. Типичный URN использует свойство Name для идентификации одного объекта на каждом узле. Например, этот URN относится к конкретному столбцу:

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

Примеры

А. Перечисление объектов с помощью false()

Это выражение запроса перечисляет все базы данных, у которых атрибут AutoClose имеет значение false в экземпляре по умолчанию в MyComputer.

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

В. Перечисление объектов с использованием contains

Это выражение запроса перечисляет все базы данных, которые регистронезависимы и имеют символ "m" в своем имени.

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

С. Перечисление объектов, использующихся не

Это выражение запроса перечисляет все таблицы AdventureWorks2012, которые не находятся в схеме базы данных Production и содержат слово "История" в имени таблицы.

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

Д. Не предоставляя выражение фильтра для конечного узла

Это выражение запроса перечисляет все столбцы в таблице AdventureWorks2012.Sales.SalesPerson :

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

Е. Перечисление объектов с помощью datetime

Это выражение запроса перечисляет все таблицы, созданные в базе данных AdventureWorks2012 в определенное время:

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

F. Перечисление объектов с помощью is_null

Это выражение запроса перечисляет все таблицы в базе данных AdventureWorks2012 , которые не имеют NULL для их свойства последнего изменения даты:

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

См. также

командлетInvoke-PolicyEvaluation
Система аудита SQL Server (Система управления базами данных)