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

Posted

技术标签:

【中文标题】如何测试数据库是不是托管在 SQL Azure 上?【英文标题】:How to test if database is hosted on SQL Azure?如何测试数据库是否托管在 SQL Azure 上? 【发布时间】:2014-03-02 04:13:22 【问题描述】:

是否可以测试数据库是否托管在 SQL Azure 上?我正在查看 EF6 的 SqlAzureExecutionStrategy 并且只想在数据库实际上是 SQL Azure 数据库时应用。

目前我正在测试应用程序是否在 Azure 中运行。但是,我们正在考虑允许客户端自己托管 DB,因此希望通过某种方式来确定 DB 是 SQL Server 还是 Azure SQL。

假设 EF 不知道,因为它隐藏了实现细节。

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

【问题讨论】:

你不能只运行SELECT @@version - 它将类似于 Microsoft SQL Azure (RTM) – 11.0.1465.26 2011 年 8 月 10 日 22:54:49 版权所有 (c) Microsoft Corporation 【参考方案1】:

于 2021 年 8 月更新以与更新的文档保持一致

SELECT CASE ServerProperty('EngineEdition')
         WHEN 1 THEN 'Personal'
         WHEN 2 THEN 'Standard'
         WHEN 3 THEN 'Enterprise'
         WHEN 4 THEN 'Express'
         WHEN 5 THEN 'SQL Database'
         WHEN 6 THEN 'Azure Synapse Analytics'
         WHEN 8 THEN 'Azure SQL Managed Instance'
         WHEN 9 THEN 'Azure SQL Edge'
         WHEN 11 THEN 'Azure Synapse serverless SQL pool'
         ELSE 'Unknown'
       END

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

【讨论】:

这正是我一直在寻找的【参考方案2】:

我一直在使用与 gvee 相同的函数 ServerProperty(),但属性名称不同:

IF ServerProperty('Edition') = 'SQL Azure'
    PRINT 'true'

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

【讨论】:

以上是关于如何测试数据库是不是托管在 SQL Azure 上?的主要内容,如果未能解决你的问题,请参考以下文章

在Azure SQL托管实例上重命名数据库,该数据库是地理复制的一部分

如何将 .trn 文件迁移到 Azure 数据库?

是否可以从 Azure SQL DB 连接 Azure SQL 托管实例?

修复或避免在 SSDT 引用 Azure 托管实例中的主数据库时出现 SQL71501 和 SQL71561 构建错误?

托管标识 - 如何在本地调试

使用身份验证托管的 Blazor Wasm 上出现 Azure 500 错误