Espressioni di query e Uniform Resource Name

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

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.

Nota

Esistono due moduli SQL Server PowerShell: SqlServer e SQLPS.

SqlServer è il modulo corrente di PowerShell da usare.

SQLPS è incluso nell'installazione di SQL Server (per compatibilità con le versioni precedenti), ma non viene più aggiornato.

Il modulo SqlServer contiene le versioni aggiornate dei cmdlet di SQLPS e include nuovi cmdlet per il supporto delle funzionalità SQL più recenti.

Installare il modulo SqlServer da PowerShell Gallery.

Per altre informazioni, vedere SQL Server PowerShell.

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.

Componente DateString Descrizione
yyyy Anno espresso a quattro cifre.
mm Mese a due cifre (da 01 a 12)
dd 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='AdventureWorks2022']/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 AdventureWorks2022 che non sono nello schema Production e i cui nomi contengono la parola History:

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2022']/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 AdventureWorks2022.Sales.SalesPerson:

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

E. Enumerazione di oggetti utilizzando datetime

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

Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2022"]/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 AdventureWorks2022 le cui proprietà di data ultima modifica non sono impostate su NULL:

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

Vedi anche