SERVERPROPERTY()
を実行する必要がある場合 SQL Serverのリンクサーバーに対して機能する場合は、パススルークエリを使用できます。これを行うには、SERVERPROPERTY()
を渡します OPENQUERY()
の2番目の引数として機能します 関数(最初の引数はリンクされたサーバー名です)。
例1-基本的な例
これが例です。
SELECT * FROM OPENQUERY( Homer, 'SELECT SERVERPROPERTY(''ProductLevel'') AS [Remote ProductLevel];' );
結果:
+-----------------------+ | Remote ProductLevel | |-----------------------| | RTM | +-----------------------+
例2–ローカルクエリとの比較
これが実際にリンクサーバー(ローカルサーバーではなく)からのものであることを確認するために、ここでもローカルサーバーに対するクエリを使用しています。
SELECT SERVERPROPERTY('ProductLevel') AS [Local ProductLevel]; SELECT * FROM OPENQUERY( Homer, 'SELECT SERVERPROPERTY(''ProductLevel'') AS [Remote ProductLevel];' );
結果:
+----------------------+ | Local ProductLevel | |----------------------| | CTP3.2 | +----------------------+ (1 row affected) +-----------------------+ | Remote ProductLevel | |-----------------------| | RTM | +-----------------------+ (1 row affected)
この場合、ローカルサーバーはSQL Server 2019プレビューを実行しており、リンクサーバーはSQLServer2017を実行しています。RTM これは元のリリースバージョンであることを意味しますが、 CTPn コミュニティテクノロジープレビューバージョンであることを意味します。
すべてのプロパティを返すスクリプトが必要な場合は、SQL Server 2017/2019のSERVERPROPERTY()からすべてのプロパティを返すクイックスクリプトを参照してください。
この関数で受け入れられる引数の完全なリストについては、Microsoftのドキュメントも参照してください。