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


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

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

Замечание

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

Модуль SqlServer — это текущий модуль PowerShell для использования.

Модуль 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:

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

Например, укажите 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 должен соответствовать формату гггг-mm-dd hh:mi:ss.mmm.

Компонент DateString Описание
гггг Год в формате четырёх цифр.
мм Двухзначный месяц (от 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='AdventureWorks2022']/Table[@Name='SalesPerson' and @Schema='Sales']/Column[@Name='SalesPersonID']

Примеры

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

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

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

В. Перечисление объектов с помощью содержащихся

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

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

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

Это выражение запроса перечисляет все AdventureWorks2022 таблицы, которые не находятся в рабочей схеме, и содержат слово "Журнал" в имени таблицы:

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

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

Это выражение запроса перечисляет все столбцы в таблице 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))]