Выражения запросов и унифицированные имена ресурсов
Применимо к: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))]
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по