5

アクセスしているSQLサーバーがSqlExpressであるかどうかを検出するための、安全な(つまり、一貫性のある、堅牢な)方法が必要です。接続文字列とTSQLを実行するために必要なすべてのライブラリがすでにあるので、TSQLからこれを実行できるようにしたいと思います(これにより、WMIがインストール/実行されているかどうかの問題を回避できます。レジストリなどにアクセスするためのアクセス許可)。

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

ありがとう。

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

4

6 に答える 6

7

使用する

SELECT SERVERPROPERTY('EditionID')

また

SELECT SERVERPROPERTY('Edition')

実行中のSQLServerのバージョンを検出します。

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

于 2009-07-16T15:35:49.570 に答える
5

そうでない場合は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
于 2009-07-16T15:31:55.973 に答える
4

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

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/aaron/default,date,2006-12-15.aspxをご覧ください。

于 2009-07-16T15:36:00.723 に答える
4

このSERVERPROPERTY関数 は他の複数の回答ですでに言及されていますが、文字列に「Express Edition」(値EngineEditionを返す引数)が含まれているかどうかを確認するよりも優れた解決策がありintます。

リンクからの引用:

EngineEdition

サーバーにインストールされているSQLServerのインスタンスのデータベースエンジンエディション。

1 =パーソナルまたはデスクトップエンジン(SQL Server 2005以降のバージョンでは使用できません。)

2 =標準(これは、標準、Web、およびビジネスインテリジェンスに対して返されます。)

3 =エンタープライズ(これは、Evaluation、Developer、および両方のEnterpriseエディションに対して返されます。)

4 = Express(これは、Express、Express with Tools、およびExpress with Advanced Servicesの場合に返されます)

5=SQLデータベース

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

基本データ型:int

したがって、次のようにExpressEditionを確認できます。

if SERVERPROPERTY('EngineEdition') = 4
    begin
        select 'Express'
    end
else
    begin
        select 'not Express'
    end
于 2017-11-24T22:22:38.690 に答える
3

SERVERPROPERTY('Edition')「ExpressEdition」を返す方をご利用いただけます

于 2009-07-16T15:32:52.760 に答える
0

サイズを監視せずに制限に達した場合、SQL Server Expressはどうなりますか?最初に警告はありますか?イベントログのイベント?

その場合は、SQL Serverが警告を発行できるようにしてから、警告を聞く方がよい場合があります。ディスクがいっぱいになった場合、SQLServerEnterpriseのインストールにも同じことが当てはまる可能性があります。

于 2009-07-16T17:00:26.403 に答える