プログラムでSQL Server Editionを検出する
-
03-07-2019 - |
質問
SMOでC#を使用していて、接続しているSQL Serverのエディション(エンタープライズ、標準など)を検出しようとしています。バージョン情報を取得する方法は知っていますが、それはSQL Serverのバージョン(たとえば、SQL Server 2008とSQL Server 2005)のみを教えてくれます。
実際の製品エディション(エンタープライズ、標準など)の入手方法を知っている人はいますか?
この情報が必要なのは、SQL Serverの一部の機能がエンタープライズのみであるためです。したがって、単にそれらを呼び出して例外をキャッチしようとすることができますが、事前検出を非常に好むでしょう。
ありがとう!
解決
SMOおよびServerオブジェクトを介して実行できるようです。 Information.Editionのようなプロパティは、あなたが望むことをするように見えます。
他のヒント
SELECT SERVERPROPERTY('productversion'),
SERVERPROPERTY ('productlevel'),
SERVERPROPERTY ('edition')
私のシステムでは
9.00.1399.06, RTM, Express Edition
この手法はSQL Server 2000以降でのみ機能するようです。データベースのいずれかが7.0以下の場合、@@ Versionを使用して、他の人が投稿したように結果を操作する必要があります
常に@@ Versionを使用しました(たとえば、SELECT @@ Versionを使用してコードで結果を操作しました)が、この記事はかなり便利です。 http://support.microsoft.com/kb/321185
リンクごとにSERVERPROPERTYを使用する際の唯一の問題は、これが古いバージョンのSQL Serverでは機能しないことです。
select @@version
バージョンとエディションを返します。ここ:
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
レジストリを確認します。この質問には、PowerShellスクリプトから適応できる優れた方法がありました。