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.

Annotazioni

Sono disponibili due moduli di SQL Server PowerShell. SqlServer e SQLPS.

Il modulo SqlServer è il modulo di PowerShell corrente da usare.

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

Il modulo SqlServer contiene versioni aggiornate dei cmdlet in SQLPS e include nuovi cmdlet per supportare le 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

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:

<xref:Microsoft.SqlServer.Management.Smo>
<xref:Microsoft.SqlServer.Management.Smo.Agent>
<xref:Microsoft.SqlServer.Management.Smo.Broker>
<xref:Microsoft.SqlServer.Management.Smo.Mail>
<xref:Microsoft.SqlServer.Management.Dmf>
<xref:Microsoft.SqlServer.Management.Facets>
<xref:Microsoft.SqlServer.Management.RegisteredServers>
<xref: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.

Componente DateString Descrizione
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='AdventureWorks2022']/Table[@Name='SalesPerson' and @Schema='Sales']/Column[@Name='SalesPersonID']

Esempi

Un. Enumerare gli oggetti usando 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. Enumerare gli oggetti usando 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. Enumerare gli oggetti usando not

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

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

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

E. Enumerare gli oggetti usando datetime

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

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

F. Enumerare gli oggetti usando is_null

Questa espressione di query enumera tutte le tabelle del AdventureWorks2022 database che non dispongono di NULL per la data dell'ultima modifica proprietà:

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