Condividi tramite


Espressioni di query e nomi di risorse uniformi

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

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

oggetto
Specifica il tipo di oggetto rappresentato in corrispondenza del nodo della stringa dell'espressione. Ogni oggetto rappresenta una classe di raccolta di questi 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 associata all'oggetto specificato in Object. Il nome della proprietà deve essere preceduto dal carattere @ . Ad esempio, specificare @IsAnsiNull per la proprietà Della classe DatabaseIsAnsiNull.

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

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

contains(@StringPropertyName, 'PatternString')
Enumera tutti gli oggetti in cui la proprietà 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à stringa specificata corrisponde esattamente al modello di caratteri specificato in 'PatternString'.

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

yyyy Anno a quattro cifre.
millimetro Mese a due cifre (da 01 a 12).
Dd Data a due cifre (da 01 a 31).
Hh Ora a due cifre con un orologio di 24 ore (da 01 a 23).
mi Minuti a due cifre (da 01 a 59).
ß 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 in base a qualsiasi formato di data archiviato in SQL Server.

is_null(@PropertyName)
Enumera tutti gli oggetti in cui la proprietà specificata ha un valore NULL.

non(<EspressioneDiProprietà>)
Nega il valore di valutazione di PropertyExpression, enumerando tutti gli oggetti che non corrispondono alla condizione specificata in PropertyExpression. Ad esempio, not(contains(@Name, 'xyz')) enumera tutti gli oggetti che non hanno la stringa xyz nei nomi.

Osservazioni:

Le espressioni di query sono stringhe che enumerano i nodi in una gerarchia di modelli SMO. Ogni nodo ha un'espressione di filtro che specifica i criteri per determinare quali oggetti in tale nodo vengono enumerati. Le espressioni di query vengono modellate nel linguaggio delle espressioni XPath. Le espressioni di query implementano un piccolo subset delle espressioni supportate da XPath e includono anche alcune estensioni non disponibili in XPath. Le espressioni XPath sono stringhe che specificano un set di criteri utilizzati per enumerare uno o più tag in un documento XML. Per altre informazioni su XPath, vedere W3C XPath Language.

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

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

Uniform Resource Names (URN)

Gli URN sono un subset di espressioni di query. Ogni URN costituisce un riferimento completo a un singolo oggetto. Un URN tipico usa la proprietà Name per identificare un singolo oggetto in ogni nodo. Ad esempio, questo URN fa riferimento a una colonna specifica:

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

Esempi

Un. Enumerazione di oggetti con false()

Questa espressione di query enumera tutti i database con l'attributo AutoClose impostato su false nell'istanza predefinita in MyComputer.

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

B. Enumerazione di oggetti tramite contiene

Questa espressione di query enumera tutti i database senza distinzione tra maiuscole e minuscole e ha il carattere 'm' nel nome.

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

C. Enumerazione di oggetti tramite not

Questa espressione di query enumera tutte le tabelle AdventureWorks2012 che non si trovano nello schema Production e contengono la parola Cronologia nel nome della tabella:

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

D. Non specificare 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 tramite datetime

Questa espressione di query enumera tutte le tabelle create nel database AdventureWorks2012 in un momento specifico:

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

F. Enumerazione di oggetti tramite is_null

Questa espressione di query enumera tutte le tabelle nel database AdventureWorks2012 che non dispongono di NULL per la data dell'ultima proprietà modificata:

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

Vedere anche

Invoke-PolicyEvaluation cmdlet
SQL Server Audit (motore di database)