Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Eseguire SERVERPROPERTY() su un server collegato in SQL Server

Se è necessario eseguire SERVERPROPERTY() funzione su un server collegato in SQL Server, è possibile utilizzare una query pass-through. Per fare ciò, passa il SERVERPROPERTY() funzione come secondo argomento per OPENQUERY() funzione (il primo argomento è il nome del server collegato).

Esempio 1 – Esempio di base

Ecco un esempio.

SELECT * FROM OPENQUERY(
    Homer,
    'SELECT SERVERPROPERTY(''ProductLevel'') AS [Remote ProductLevel];'
);

Risultato:

+-----------------------+
| Remote ProductLevel   |
|-----------------------|
| RTM                   |
+-----------------------+

Esempio 2:confronto con una query locale

Giusto per confermare che proveniva effettivamente dal server collegato (e non dal server locale), eccolo di nuovo, insieme a una query sul server locale.

SELECT SERVERPROPERTY('ProductLevel') AS [Local ProductLevel];

SELECT * FROM OPENQUERY(
    Homer,
    'SELECT SERVERPROPERTY(''ProductLevel'') AS [Remote ProductLevel];'
);

Risultato:

+----------------------+
| Local ProductLevel   |
|----------------------|
| CTP3.2               |
+----------------------+
(1 row affected)
+-----------------------+
| Remote ProductLevel   |
|-----------------------|
| RTM                   |
+-----------------------+
(1 row affected)

In questo caso, il server locale esegue l'anteprima di SQL Server 2019 e il server collegato esegue SQL Server 2017. RTM significa che è una versione originale, mentre CTPn significa che è una versione Community Technology Preview.

Vedere script rapido che restituisce tutte le proprietà da SERVERPROPERTY() in SQL Server 2017/2019 se è necessario uno script che restituisca tutte le proprietà.

Consulta anche la documentazione Microsoft per un elenco completo degli argomenti accettati da questa funzione.