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

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

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

Примечание.

Существует два модуля SQL Server PowerShell — SqlServer и SQLPS.

Самым актуальным модулем PowerShell является модуль SqlServer.

Модуль SQLPS входит в состав установки SQL Server (для обеспечения обратной совместимости), но больше не обновляется.

Модуль SqlServer содержит обновленные версии командлетов в SQLPS и новые командлеты для поддержки последних функций SQL.

Установите модуль SqlServer из коллекции PowerShell.

Подробные сведения см. в статье 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.

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
Указывает имя одного из свойств класса, связанного с объектом, который задан в Object. Перед этим именем свойства должен стоять символ @. Например, укажите @IsAnsiNull для свойства IsAnsiNull класса Database.

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

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

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

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

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

Компонент DateString Description
yyyy Год из четырех цифр.
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.

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

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

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

Имена URN представляют собой подмножество выражений запроса. Каждое имя URN является полной ссылкой на один объект. В обычном имени URN свойство «Имя» используется для определения одного объекта в каждом узле. Например, данное имя URN ссылается на определенный столбец:

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

Примеры

А. Перечисление объектов при помощи функции 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 , которые не находятся в схеме Production и содержат в имени таблицы слово "History":

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  

Д. Перечисление объектов при помощи функции 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))]  

См. также