Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Führen Sie SERVERPROPERTY() für einen Verbindungsserver in SQL Server aus

Wenn Sie SERVERPROPERTY() ausführen müssen Funktion für einen Verbindungsserver in SQL Server verwenden, können Sie eine Pass-Through-Abfrage verwenden. Übergeben Sie dazu die SERVERPROPERTY() Funktion als zweites Argument für OPENQUERY() Funktion (das erste Argument ist der Name des Verbindungsservers).

Beispiel 1 – Einfaches Beispiel

Hier ist ein Beispiel.

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

Ergebnis:

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

Beispiel 2 – Vergleich mit einer lokalen Abfrage

Nur um zu bestätigen, dass dies tatsächlich vom verknüpften Server kam (und nicht vom lokalen Server), hier ist es noch einmal, zusammen mit einer Abfrage für den lokalen Server.

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

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

Ergebnis:

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

In diesem Fall wird auf dem lokalen Server SQL Server 2019 Preview ausgeführt und auf dem Verbindungsserver SQL Server 2017. RTM bedeutet, dass es sich um eine Originalversion handelt, während CTPn bedeutet, dass es sich um eine Community Technology Preview-Version handelt.

Siehe Schnellskript, das alle Eigenschaften von SERVERPROPERTY() in SQL Server 2017/2019 zurückgibt, wenn Sie ein Skript benötigen, das alle Eigenschaften zurückgibt.

Siehe auch die Microsoft-Dokumentation für eine vollständige Liste der von dieser Funktion akzeptierten Argumente.