Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exécutez SERVERPROPERTY() sur un serveur lié dans SQL Server

Si vous devez exécuter le SERVERPROPERTY() fonction sur un serveur lié dans SQL Server, vous pouvez utiliser une requête directe. Pour cela, passez le SERVERPROPERTY() fonction comme second argument de OPENQUERY() fonction (le premier argument est le nom du serveur lié).

Exemple 1 - Exemple de base

Voici un exemple.

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

Résultat :

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

Exemple 2 – Comparé à une requête locale

Juste pour confirmer que cela provenait bien du serveur lié (et non du serveur local), le voici à nouveau, accompagné d'une requête contre le serveur local.

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

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

Résultat :

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

Dans ce cas, le serveur local exécute SQL Server 2019 Preview et le serveur lié exécute SQL Server 2017. RTM signifie qu'il s'agit d'une version d'origine, alors que CTPn signifie qu'il s'agit d'une version Community Technology Preview.

Voir Script rapide qui renvoie toutes les propriétés de SERVERPROPERTY() dans SQL Server 2017/2019 si vous avez besoin d'un script qui renvoie toutes les propriétés.

Consultez également la documentation de Microsoft pour une liste complète des arguments acceptés par cette fonction.