Expressões de consultas e nomes de recurso exclusivos

Os modelos SMO (Management Object) SQL Server e os snap-ins SQL Server PowerShell usam dois tipos de cadeias de expressão que são semelhantes às expressões XPath. As expressões de consultas são cadeias que especificam um conjunto de critérios para enumerar um ou mais objetos em uma hierarquia de modelo de objetos. Um URN (nome de recursos exclusivos) é um tipo específico de cadeia de expressão de consulta que identifica exclusivamente um único objeto.

Sintaxe

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

Argumentos

  • Objeto
    Especifica o tipo de objeto que é representado naquele nó da cadeia de expressão. Cada objeto representa uma classe de coleção destes namespaces de modelos de objetos 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

    Por exemplo, especifique Servidor para a classe ServerCollection, Banco de Dados para a classe DatabaseCollection.

  • @PropertyName
    Especifica o nome de uma das propriedades da classe associada ao objeto especificado em Objeto. O nome da propriedade deve ser prefixado com o caractere @. Por exemplo, especifique @ IsAnsiNull para a propriedade da classe Banco de DadosIsAnsiNull.

  • @BooleanPropertyName=true()
    Enumera todos os objetos em que a propriedade Booleano especificada é definida como TRUE.

  • @BooleanPropertyName=false()
    Enumera todos os objetos em que a propriedade Booleano especificada é definida como FALSE.

  • contains(@StringPropertyName, 'PatternString')
    Enumera todos os objetos em que a propriedade da cadeia de caracteres especificada contém, pelo menos, uma ocorrência do conjunto de caracteres especificado em 'PatternString'.

  • @StringPropertyName='PatternString'
    Enumera todos os objetos em que o valor da propriedade da cadeia de caracteres especificada é exatamente a mesma que o padrão de caractere especificado em 'PatternString'.

  • @DatePropertyName= datetime('DateString')
    Enumera todos os objetos em que o valor da propriedade de data especificada corresponde à data especificada em 'DateString'. DateString deve seguir o formato aaaa-mm-dd hh:mi:ss.mmm

    aaaa

    Ano com quatro dígitos.

    mm

    Mês com dois dígitos (01 a 12).

    dd

    Data com dois dígitos (01 a 31).

    hh

    Hora de dois dígitos em um relógio de 24 horas (01 a 23).

    mi

    Minutos com dois dígitos (01 a 59).

    ss

    Segundos com dois dígitos (01 a 59).

    mmm

    Número de milissegundos (001 a 999).

    As datas especificadas nesse formato podem ser avaliadas em relação a qualquer formato de data armazenado em SQL Server.

  • is_null(@PropertyName)
    Enumera todos os objetos em que a propriedade especificada tem um valor de NULL.

  • not(<PropertyExpression>)
    Nega o valor de avaliação do PropertyExpression, enumerando todos os objetos que não correspondem à condição especificada em PropertyExpression. Por exemplo, not(contains(@Name, 'xyz')) enumera todos os objetos que não têm a cadeia de caracteres xyz nos nomes.

Comentários

Expressões de consulta são cadeias de caracteres que enumeram os nós em uma hierarquia de modelos SMO. Cada nó tem uma expressão de filtro que especifica os critérios para determinar quais objetos desse nó são enumerados. Expressões de consultas são modeladas na linguagem de expressão XPath. As expressões de consulta implementam um pequeno subconjunto das expressões suportadas por XPath e também possuem expressões que não são encontradas em XPath. As expressões Xpath são cadeias que especificam um conjunto de critérios usados para enumerar uma ou mais marcas em um documento XML. Para obter mais informações sobre XPath, consulte W3C.

Expressões de consulta devem iniciar com uma referência absoluta ao objeto Servidor. Não são permitidas expressões relativas com uma / à esquerda. A seqüência de objetos especificados em uma expressão de consulta deve seguir a hierarquia de objetos de coleção no modelo de objetos associado. Por exemplo, uma expressão de consulta que faz referência a objetos no namespace Microsoft.SqlServer.Management.Smo deve começar com um nó Servidor, seguido por um nó Banco de Dados e assim por diante.

Se um <FilterExpression> não for especificado para um objeto, todos os objetos desse nó serão enumerados.

URN (Nomes de recursos exclusivos)

OS URNs são um subconjunto de expressões de consulta. Cada URN forma uma referência totalmente qualificada a um único objeto. Um URN típico usa a propriedade Nome para identificar um único objeto em cada nó. Por exemplo, este URN faz referência a uma coluna específica:

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

Exemplos

A. Enumerando objetos usando false()

Essa expressão de consulta enumera todos os bancos de dados que têm o atributo AutoClose definido como falso na instância padrão em MyComputer.

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

B. Enumerando objetos usando contains

Esta expressão de consulta enumera todos os bancos de dados que não diferenciam maiúsculas de minúsculas e têm o caractere 'm' no nome.

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

C. Enumerando objetos usando not

Esta expressão de consulta enumera todas as tabelas de AdventureWorks que não estão no esquema Produção e que contêm a palavra Histórico no nome da tabela:

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

D. Não fornecendo uma expressão de filtro para o nó final

Esta expressão de consulta enumera todas as colunas na tabela AdventureWorks.Sales.SalesPerson:

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

E. Enumerando objetos que usam data e hora

Esta expressão de consulta enumera todas as tabelas que são criadas no banco de dados AdventureWorks em um momento específico:

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

F. Enumerando objetos usando is_null

Esta expressão de consulta enumera todas as tabelas do banco de dados AdventureWorks que não têm o NULL para a última propriedade modificada:

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