質問

私は、私がアクセスしていますSQL ServerがSQL Expressをあるか否かを検出する安全な(すなわち、一貫性のある堅牢な)方法が必要です。私は、これはWMIがインストールされているかどうか/実行されているとの問題を回避するのに役立つはずです(私はすでに接続文字列と私はTSQLを実行するために必要なすべてのライブラリを持っているので、私は、TSQLからこれを行うことができることを好むと思う、ユーザーが持っていますレジストリなどへのアクセス許可)。

誰もがこれを行う方法を知っていますか?

感謝します。

PS:基本的に私はこれをしたいので、私は4GBの制限に対して私のデータベースのサイズを監視し、私はそれに近づくときにアクションを取る...しかし、私は完全なSQL Serverのエディションで実行しているならば、私は望んでいないことができますなし(実用的な)ハードコードされた制限が存在しないので、それを心配するコード。私は私のプログラムで手動設定に入れることができますが、コードだけで、自動的にサーバが「エクスプレス」版ですかどうかを知るために、したがって必要が正しいことをしたならば、それは非常に良くなります。

役に立ちましたか?

解決

いくつかの方法があります:

EXEC sp_server_info 2

または

SELECT @@version

または

SELECT serverproperty('ProductVersion')

あなたはまた、これを行うことができます:

DECLARE @ver nvarchar(128)
SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @ver = SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1)
IF ( @ver = '8' )
   SELECT 'SQL Server 2000'
ELSE IF ( @ver = '9' )
   SELECT 'SQL Server 2005'
ELSE
   SELECT 'Unsupported SQL Server Version'
ます。http://blog.devstoneで

詳細情報.COM /アーロン/デフォルト、日付、2006-12-15.aspx

他のヒント

使用

SELECT SERVERPROPERTY('EditionID')

または

SELECT SERVERPROPERTY('Edition')

実行しているのSQLServerのバージョンを検出する。

http://msdn.microsoft.com/en-us/library/ ms174396.aspxする

それがあればそうでない場合は、

このは0を返し、(ここでは126)、何か非ゼロます:

select charindex('Express Edition',@@version)

ブール文脈で例:

if (select charindex('Express Edition',@@version)) > 0
    begin
        print 'Express edition!'
    end
else
    begin
        print 'Not Express edition!'
    end

あなたは "Express Editionは"

を返しますSERVERPROPERTY('Edition')を使用することができます

SERVERPROPERTY機能するすでに複数の他の回答で述べたが、文字列は「Express Editionを」含まれているかどうかをチェックするよりもよりよい解決策がありますした。EngineEdition値を返しますint引数は、

のリンクから引用:

  

EngineEdition

     

SQL Serverのインスタンスのデータベースエンジン版は上にインストール   サーバーます。

     SQL Server 2005で

1 =個人またはデスクトップエンジン(利用できませんし、   それ以降のバージョン。)

     

2 =標準(これは標準のために返され、Web、およびビジネス   インテリジェンス。)

     

3 =エンタープライズ(これは、評価のために返送され、開発者、および両方   エンタープライズ版。)

     

4 =エクスプレス(このツールでエクスプレス、エクスプレスのために戻され、   高度なサービスとエクスプレス)

     

5 = SQLデータベース

     

6 - SQLデータウェアハウス

     

基本データ型:

の整数の

ですから、このようExpress Editionのために確認することができます

if SERVERPROPERTY('EngineEdition') = 4
    begin
        select 'Express'
    end
else
    begin
        select 'not Express'
    end
あなたのサイズを監視しますが、限界に到達していない場合は、

何がSQL Server Expressの中で起こりますか?警告が最初ありますか?イベントログ内のイベント?

もしそうなら、あなたは、SQL Serverは警告を発行できるようにするためにもっと良いかもしれませんが、その後、ちょうどそれらに耳を傾けます。ディスクがいっぱいになった場合、同じはよくSQL ServerのEnterpriseのインストールのために適用される場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top