Programaticamente detectar SQL Server Edition
-
03-07-2019 - |
Pergunta
Eu estou usando C # com SMO e tentar detectar qual edição do SQL Server (por exemplo, empresa, standard) Eu estou conectando. Eu sei como obter as informações de versão, mas isso só me diz qual a versão do SQL Server (por exemplo, SQL Server 2008 vs SQL Server 2005).
Alguém sabe como obter a edição do produto real (por exemplo, empresa, standard)?
Eu preciso esta informação porque alguns recursos do SQL Server são apenas empresarial. Assim, eu poderia apenas tentar chamá-los e capturar a exceção, mas eu prefiro muito mais uma detecção inicial.
Obrigado!
Solução
Parece que você pode ser capaz de fazê-lo através de SMO eo objeto Server. Há imóveis como Information.Edition que parece que deve fazer o que quiser.
Outras dicas
SELECT SERVERPROPERTY('productversion'),
SERVERPROPERTY ('productlevel'),
SERVERPROPERTY ('edition')
No meu sistema retorna
9.00.1399.06, RTM, Express Edition
Parece que esta técnica só funciona no SQL Server 2000 ou mais tarde, se algum dos seus bancos de dados são 7,0 ou menos, você terá que usar @@ Version e manipular os resultados, como outros já publicados
Eu sempre usei @@ Version, mas este artigo parece muito útil (por exemplo, SELECT @@ Version e manipluted o resultado no código.); http://support.microsoft.com/kb/321185
O único problema com o uso SERVERPROPERTY, de acordo com o link ... é que isto não vai funcionar com a versão mais antiga do SQL Server.
select @@version
Retorna a versão e qual edição. Aqui:
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Verifique o registro. Esta questão tinha um método bom você poderia adaptar a partir do PowerShell script:
Como faço para verificar o SQL server Versão usando PowerShell?