如何测试数据库是否托管在SQL Azure上?

Gra*_*ler 10 sql-server entity-framework entity-framework-6 azure-sql-database

是否可以测试数据库是否托管在SQL Azure上?我正在寻找用于EF6的SqlAzureExecutionStrategy,并且只想在数据库实际是SQL Azure数据库时应用.

目前我正在测试App是否在Azure中运行.但是,我们正在考虑允许客户端自己托管数据库,因此需要某种方法来确定数据库是SQL Server还是Azure SQL.

假设EF不知道它隐藏了实现细节.

可能只是有一个配置设置我猜.只是想知道它是否在技术上可行.

gve*_*vee 25

SELECT CASE ServerProperty('EngineEdition')
         WHEN 1 THEN 'Personal'
         WHEN 2 THEN 'Standard'
         WHEN 3 THEN 'Enterprise'
         WHEN 4 THEN 'Express'
         WHEN 5 THEN 'Azure'
         ELSE 'Unknown'
       END
Run Code Online (Sandbox Code Playgroud)

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


Gyr*_*ite 8

我一直在使用与gvee相同的功能ServerProperty(),但具有不同的属性名称:

IF ServerProperty('Edition') = 'SQL Azure'
    PRINT 'true'
Run Code Online (Sandbox Code Playgroud)

对我来说,这更容易阅读和自我记录。

  • 我也使用了这段代码,但后来我发现了一个由于排序问题而无法工作的情况。检查https://dba.stackexchange.com/questions/317945/collat​​ion-conflict-when-comparing-sql-variant-with-varchar-literal (2认同)