سؤال

أحتاج إلى وسيلة آمنة (أي متسقة أو قوية) للكشف عن ما إذا كان خادم SQL الخاص أم لا يمكن الوصول إليه هو SQL Express. أعتقد أنني أفضل أن أكون قادرا على القيام بذلك من TSQL، حيث أن لديك بالفعل سلسلة اتصال وجميع المكتبات التي أحتاجها لتنفيذ TSQL (يجب أن يساعد هذا في تجنب المشكلات مع تثبيت / تشغيل WMI أم لا، أذونات للوصول إلى التسجيل إلخ).

لا أحد يعرف من طريقة للقيام بذلك ؟

شكرا.

ملاحظة: في الأساس، أريد أن أفعل هذا حتى أتمكن من مراقبة حجم قاعدة البيانات الخاصة بي مقابل الحد الأقصى 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/aaron/Default، 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

يمكنك استخدام SERVERPROPERTY('Edition') الذي سيعود "Express Edition"

ال SERVERPROPERTY وظيفة تم ذكره بالفعل في إجابات أخرى متعددة، ولكن هناك حلا أفضل من التدقيق إذا كانت السلسلة تحتوي على "Express Edition": EngineEdition حجة، التي ترجع int القيمة.

اقتباس من الرابط:

المحن

إصدار محرك قاعدة البيانات من مثيل خادم SQL مثبتا على الخادم.

1 = محرك شخصي أو سطح المكتب (غير متوفر في SQL Server 2005 والإصدارات الأحدث.)

2 = معيار (يتم إرجاع هذا لمعايير ويب واستخبارات الأعمال.)

3 = Enterprise (يتم إرجاع ذلك للتقييم والمطور، وكلا إصدارات المؤسسات.)

4 = Express (يتم إرجاع هذا للتعبير عن الأدوات والتعبير عن الأدوات والتعبير عن الخدمات المتقدمة)

5 = قاعدة بيانات SQL

6 - مستودع بيانات SQL

نوع البيانات الأساسية: إتجاه

لذلك يمكنك التحقق من الإصدار السريع مثل هذا:

if SERVERPROPERTY('EngineEdition') = 4
    begin
        select 'Express'
    end
else
    begin
        select 'not Express'
    end

ماذا يحدث في SQL Server Express إذا كنت لا تراقب الحجم، ولكن الوصول إلى الحد الأقصى؟ هل هناك تحذيرات أولا؟ الأحداث في سجل الأحداث؟

إذا كان الأمر كذلك، فقد تفعل ذلك أفضل للسماح بإصدار SQL Server لإصدار التحذيرات، ثم استمع إليهم فقط. قد ينطبق الشيء نفسه على تثبيت Enterprise SQL Server إذا كان القرص ممتلئا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top