Espressioni di query e Uniform Resource Name
I modelli SMO (SQL Server Management Objects) 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 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 oo: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) |
hh | 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 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 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 non viene specificata una <FilterExpression> 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
R. 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 la cui proprietà di data ultima modifica non è impostata su NULL:
Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012"]/Table[Not(is_null(@DateLastModified))]
Vedere anche
cmdlet Invoke-PolicyEvaluation
SQL Server Audit (Database Engine)