Expressions de requête et noms de ressource uniques

Les modèles SMO (SQL Server Management Objects) et les composants logiciels enfichables SQL Server PowerShell utilisent deux types de chaînes d'expression semblables aux expressions XPath. Les expressions de requête sont des chaînes qui spécifient un jeu de critères permettant d'énumérer un ou plusieurs objets dans une hiérarchie de modèle objet. Un nom de ressource unique (URN) est un type spécifique de chaîne d'expression de requête qui identifie de façon unique un objet particulier.

Syntaxe

Object1[<FilterExpression1>]/ ... /ObjecN[<FilterExpressionN>]

<FilterExpression>::=
<PropertyExpression> [and <PropertyExpression>][...n]

<PropertyExpression>::=
      @BooleanPropertyName=true()
 | @BooleanPropertyName=false()
 | contains(@StringPropertyName, 'PatternString')
  | @StringPropertyName='String'
 | @DatePropertyName=datetime('DateString')
 | is_null(@PropertyName)
 | not(<PropertyExpression>)

Arguments

  • Objet
    Spécifie le type d'objet qui est représenté au niveau de ce nœud par la chaîne d'expression. Chaque objet représente une classe de collection à partir de ces espaces de noms du modèle objet 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

    Par exemple, spécifiez Server pour la classe ServerCollection, Database pour la classe DatabaseCollection.

  • @NomPropriété
    Spécifie le nom de l'une des propriétés de la classe associée à l'objet spécifié dans Objet. Le nom de la propriété doit avoir pour préfixe le caractère @. Par exemple, spécifiez @IsAnsiNull pour la propriété de classe DatabaseIsAnsiNull.

  • @NomPropriétéBooléenne=true()
    Énumère tous les objets où la propriété booléenne spécifiée a la valeur TRUE.

  • @NomPropriétéBooléenne=false()
    Énumère tous les objets où la propriété booléenne spécifiée a la valeur FALSE.

  • contains(@NomPropriétéChaîne, 'ChaîneModèle')
    Énumère tous les objets où la propriété de chaîne spécifiée contient au moins une occurrence du jeu de caractères spécifié dans 'ChaîneModèle'.

  • @NomPropriétéChaîne='ChaîneModèle'
    Énumère tous les objets où la valeur de la propriété de chaîne spécifiée est identique au modèle de caractère spécifié dans 'ChaîneModèle'.

  • @NomPropriétéDate= datetime('ChaîneDate')
    Énumère tous les objets où la valeur de la propriété de date spécifiée correspond à la date spécifiée dans 'ChaîneDate'. ChaîneDate doit être au format aaaa-mm-jj hh:mi:ss.mmm.

    aaaa

    Année à quatre chiffres.

    mm

    Mois à deux chiffres (01 à 12).

    jj

    Date à deux chiffres (01 à 31).

    hh

    Heure à deux chiffres au format 24 heures (01 à 23).

    mi

    Minutes à deux chiffres (01 à 59).

    ss

    Secondes à deux chiffres (01 à 59).

    mmm

    Nombre de millisecondes (001 à 999).

    Les dates spécifiées dans ce format peuvent être évaluées par rapport à tout format de date stocké dans SQL Server.

  • is_null(@NomPropriété)
    Énumère tous les objets où la propriété spécifiée a la valeur NULL.

  • not(<PropertyExpression>)
    Inverse la valeur d'évaluation de PropertyExpression, énumérant tous les objets qui ne correspondent pas à la condition spécifiée dans PropertyExpression. Par exemple, not(contains(@Name, 'xyz')) énumère tous les objets dont le nom ne contient pas la chaîne xyz.

Notes

Les expressions de requête sont des chaînes qui énumèrent les nœuds dans une hiérarchie de modèle SMO. Chaque nœud possède une expression de filtre qui spécifie les critères pour déterminer les objets qui sont énumérés au niveau de ce nœud. Les expressions de requête sont modélisées sur le langage d'expression XPath. Les expressions de requête implémentent un petit sous-ensemble des expressions qui sont prises en charge par XPath, et possèdent également quelques extensions qui ne sont pas présentes dans XPath. Les expressions XPath sont des chaînes qui spécifient un jeu de critères utilisé pour énumérer une ou plusieurs balises dans un document XML. Pour plus d'informations sur XPath, consultez W3C.

Les expressions de requête doivent commencer par une référence absolue à l'objet serveur. Les expressions relatives avec une barre oblique (/) de début ne sont pas autorisées. La séquence des objets spécifiés dans une expression de requête doit respecter la hiérarchie des objets de collection dans le modèle objet associé. Par exemple, une expression de requête qui fait référence à des objets dans l'espace de noms Microsoft.SqlServer.Management.Smo doit commencer par un nœud Server, suivi d'un nœud Database, etc.

Si un <FilterExpression> n'est pas spécifié pour un objet, tous les objets au niveau de ce nœud sont énumérés.

Noms de ressource uniques (URN)

Les noms URN sont un sous-ensemble d'expressions de requête. Chaque nom URN forme une référence complète à un objet unique. Un nom URN type utilise la propriété Name pour identifier un objet unique au niveau de chaque nœud. Par exemple, ce nom URN fait référence à une colonne spécifique :

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

Exemples

A. Énumération d'objets à l'aide de false()

Cette expression de requête énumère toutes les bases de données dont l'attribut AutoClose a la valeur false dans l'instance par défaut sur MyComputer.

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

B. Énumération d'objets à l'aide de contains

Cette expression de requête énumère toutes les bases de données qui ne respectent pas la casse et dont le nom comporte le caractère « m ».

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

C. Énumération d'objets à l'aide de not

Cette expression de requête énumère toutes les tables AdventureWorks qui ne figurent pas dans le schéma Production et qui contiennent le mot History dans le nom de la table :

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

D. Non-spécification d'une expression de filtre pour le dernier nœud

Cette expression de requête énumère toutes les colonnes dans la table AdventureWorks.Sales.SalesPerson :

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

E. Énumération d'objets à l'aide de datetime

Cette expression de requête énumère toutes les tables créées dans la base de données AdventureWorks à une heure spécifique :

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

F. Énumération d'objets à l'aide de is_null

Cette expression de requête énumère toutes les tables dans la base de données AdventureWorks dont la propriété de date de dernière modification n'a pas la valeur NULL :

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