[英]How to check whether the installed instance is full SQL Server or just SQL Server Express
在我的一個項目中,首先我需要檢查機器上是否安裝了SQL Server。 我這樣做的代碼如下所示:
var sqlRegistry = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Microsoft SQL Server", true);
if (sqlRegistry == null)
{ }
else
{ }
但是在else
部分,我需要知道安裝的SQL Server是“僅”SQL Server Express還是完整的SQL Server版本。
我該怎么做?
SQL-Server似乎有一個內置函數SERVERPROPERTY
,因此您應該能夠通過SQL查詢服務器,如:
SELECT SERVERPROPERTY('EngineEdition')
您可以在注冊表項中查看已安裝的實例:
Software\Microsoft\Microsoft SQL Server\InstalledInstances
這將包含所有已安裝的實例,例如在我的系統上:
MSSQLSERVER
SQLEXPRESS
使用此值進入此注冊表項:
Software\Microsoft\Microsoft SQL Server\Instance Names\SQL
獲取下一步所需的實際實例名稱。
現在,如果你去查看注冊表項:
Software\Microsoft\Microsoft SQL Server\(InstanceName)\Setup\Edition
在那里你有一個值,如Express
for SQL Server Express,或Developer Edition
或其他東西。 這應該告訴您是否有Express
或另一個“完整版”的SQL Server
這里有一些代碼可以在服務器上安裝MS SQL Server Editions到基於@marc_s的控制台:
//This line open Registry with x64 View from x86 process. Usually SQL server installed in x64 edition, otherwise you should check x86
var localMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var msSQLServer = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
var instances = (string[])msSQLServer.GetValue("InstalledInstances");
foreach (var instance in instances)
{
var insNames = localMachine.OpenSubKey(@"Software\Microsoft\Microsoft SQL Server\Instance Names\SQL");
var realNameInstanse = (string)insNames.GetValue(instance);
var sqlEditionRegistry = localMachine.OpenSubKey(string.Format(@"Software\Microsoft\Microsoft SQL Server\{0}\Setup", realNameInstanse));
var edition = (string)sqlEditionRegistry.GetValue("Edition");
Console.WriteLine("Instance {0}, RealName {2}, - Edition: {1}", instance, edition, realNameInstanse);
}
這是基於本文末尾列表的版本列表:
標准版
64位版
快遞版
開發人員版
企業版
工作組版
標准
分析服務
開發人員
企業
企業評估
表達
快遞與高級服務
集成服務
數據中心
報告服務
小企業標准版
卷筒紙
工作組
商業智能
企業核心
要檢查sql server版本,可以查詢@@version
。
execute select @@version
輸出包括:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.