Condividi tramite


Espressioni di query e Uniform Resource Name

I modelli SMO (SQL Server Management Object) e gli snap-in PowerShell per SQL Server utilizzano due tipi di stringhe di espressione simili alle espressioni XPath. Le espressioni di query sono stringhe che specificano un set di criteri utilizzato per enumerare uno o più oggetti in una gerarchia del modello a oggetti. Un Unique Resource Name (URN) è un tipo specifico di stringa di espressione di query che identifica un singolo oggetto in modo univoco.

Sintassi

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

Argomenti

  • Object
    Specifica il tipo di oggetto che è rappresentato in corrispondenza del nodo della stringa di espressione. Ciascun oggetto rappresenta una classe di raccolte dai seguenti spazi dei nomi del modello a oggetti 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

    Ad esempio, specificare Server per la classe ServerCollection, Database per la classe DatabaseCollection.

  • @PropertyName
    Specifica il nome di una delle proprietà della classe associato all'oggetto specificato in Object. Il nome della proprietà deve essere preceduto dal carattere @. Ad esempio, specificare @IsAnsiNull per la proprietà IsAnsiNull della classe Database.

  • @BooleanPropertyName=true()
    Enumera tutti gli oggetti in cui la proprietà Boolean specificata è impostata su TRUE.

  • @BooleanPropertyName=false()
    Enumera tutti gli oggetti in cui la proprietà Boolean specificata è impostata su FALSE.

  • contains(@StringPropertyName, 'PatternString')
    Enumera tutti gli oggetti in cui la proprietà della stringa specificata contiene almeno un'occorrenza del set di caratteri specificato in 'PatternString'.

  • @StringPropertyName='PatternString'
    Enumera tutti gli oggetti in cui il valore della proprietà della stringa specificata è esattamente uguale al modello di caratteri specificato in 'PatternString'.

  • @DatePropertyName= datetime('DateString')
    Enumera tutti gli oggetti in cui il valore della proprietà Date specificata corrisponde alla data specificata in 'DateString'. DateString deve essere nel formato aaaa-mm-gg hh.mi.ss.mmm

    aaaa

    Anno espresso a quattro cifre.

    mm

    Mese a due cifre (da 01 a 12)

    gg

    Data a due cifre (da 01 a 31)

    oo

    Ora a 2 cifre nel formato a 24 ore (da 01 a 23)

    mi

    Minuti a due cifre (da 01 a 59)

    ss

    Secondi a due cifre (da 01 a 59)

    mmm

    Numero di millisecondi (da 001 a 999).

    Le date specificate in questo formato possono essere valutate rispetto a qualsiasi formato della data archiviato in SQL Server.

  • is_null(@PropertyName)
    Enumera tutti gli oggetti in cui la proprietà specificata è impostata su NULL.

  • not(<PropertyExpression>)
    Nega il valore della valutazione della PropertyExpression, enumerando tutti gli oggetti che non corrispondono alla condizione specificata nella PropertyExpression. Ad esempio, not(contains(@ Name, 'xyz')) enumera tutti gli oggetti i cui nomi non contengono la stringa xyz.

Osservazioni

Le espressioni di query sono stringhe che enumerano i nodi in una gerarchia del modello SMO. Ciascun nodo dispone di un'espressione di filtro che specifica i criteri per determinare quali oggetti in corrispondenza di un dato nodo sono enumerati. Le espressioni di query vengono modellate sul linguaggio delle espressioni XPath. Le espressioni di query implementano un piccolo subset delle espressioni che sono supportate da XPath; inoltre dispongono di alcune estensioni che non si trovano in XPath. Le espressioni XPath sono stringhe che specificano un set di criteri che vengono utilizzati per enumerare uno o più tag in un documento XML. Per ulteriori informazioni su XPath, vedere W3C XPath Language.

Le espressioni di query devono iniziare con un riferimento assoluto all'oggetto Server. Le espressioni relative con un carattere "/" iniziale non sono consentite. La sequenza di oggetti che sono specificati in un'espressione di query deve seguire la gerarchia di oggetti Collection nel modello a oggetti associato. Ad esempio, un'espressione di query che fa riferimento a oggetti nello spazio dei nomi Microsoft.SqlServer.Management.Smo deve iniziare con un nodo Server seguito da un nodo Database e così via.

Se <FilterExpression> non viene specificato per un oggetto, vengono enumerati tutti gli oggetti del nodo.

Unique Resource Name (URN)

Gli URN sono un subset di espressioni di query. Ciascun URN rappresenta un riferimento completo a un oggetto singolo. Il tipico URN utilizza la proprietà Name per identificare un singolo oggetto in corrispondenza di ciascun nodo. Ad esempio, questo URN si riferisce a una colonna specifica:

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

Esempi

A.Enumerazione di oggetti utilizzando false()

Questa espressione di query enumera tutti i database il cui attributo AutoClose è impostato su False nell'istanza predefinita in MyComputer.

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

B.Enumerazione di oggetti utilizzando contains

Questa espressione di query enumera tutti i database per quali non viene fatta distinzione tra maiuscole e minuscole e i cui nomi contengono il carattere "m".

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

C.Enumerazione di oggetti utilizzando not

Questa espressione di query enumera tutte le tabelle di AdventureWorks2012 che non sono nello schema Production e i cui nomi contengono la parola History:

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

D.Mancata specifica di un'espressione di filtro per il nodo finale

Questa espressione di query enumera tutte le colonne nella tabella AdventureWorks2012.Sales.SalesPerson:

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

E.Enumerazione di oggetti utilizzando datetime

Questa espressione di query enumera tutte le tabelle create nel database AdventureWorks2012 a un'ora specifica:

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

F.Enumerazione di oggetti utilizzando is_null

Questa espressione di query enumera tutte le tabelle nel database AdventureWorks2012 le cui proprietà di data ultima modifica non sono impostate su NULL:

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

Vedere anche

Concetti

cmdlet Invoke-PolicyEvaluation

SQL Server Audit (Database Engine)