TSQLからSQL Expressを検出
-
16-09-2019 - |
質問
私は、私がアクセスしています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のバージョンを検出する。
このは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のインストールのために適用される場合があります。