You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#检测Azure SQL Database是否处于Pause(暂停)状态

如何用C#检测Azure SQL Database是否处于暂停状态

要检测Azure SQL Database的暂停状态,你可以通过Azure管理API获取数据库的运行状态,核心是使用Microsoft.Azure.Management.Sql官方管理库。下面是具体实现步骤和示例代码:

步骤1:安装必要的NuGet包

在项目中安装以下NuGet包:

Install-Package Microsoft.Azure.Management.Sql
Install-Package Microsoft.Azure.Management.ResourceManager.Authentication

步骤2:编写检测代码

以下示例使用服务主体(Service Principal)进行身份验证,调用Azure管理API获取指定SQL数据库的状态:

using Microsoft.Azure.Management.Sql;
using Microsoft.Azure.Management.Sql.Models;
using Microsoft.Identity.Client;
using System;
using System.Threading.Tasks;

class AzureSqlStatusChecker
{
    static async Task Main(string[] args)
    {
        // 配置参数
        string tenantId = "你的租户ID";
        string clientId = "你的服务主体客户端ID";
        string clientSecret = "你的服务主体密钥";
        string subscriptionId = "你的订阅ID";
        string resourceGroupName = "资源组名称";
        string serverName = "SQL服务器名称";
        string databaseName = "要检测的数据库名称";

        // 构建认证上下文
        var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
        var sqlManagementClient = new SqlManagementClient(credential)
        {
            SubscriptionId = subscriptionId
        };

        try
        {
            // 获取数据库详情
            Database database = await sqlManagementClient.Databases.GetAsync(resourceGroupName, serverName, databaseName);
            
            // 检查状态
            if (database.Status.Equals("Paused", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("数据库已暂停");
            }
            else if (database.Status.Equals("Pausing", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("数据库正在暂停中");
            }
            else
            {
                Console.WriteLine($"数据库当前状态:{database.Status}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"获取数据库状态失败:{ex.Message}");
        }
    }
}

关键说明

  • 状态字段:Azure SQL Database的状态通过Database.Status属性获取,暂停状态对应的取值是Paused,此外还有Pausing(正在暂停)、Online(运行中)等状态值。
  • 权限要求:用于认证的服务主体需要拥有SQL DB Contributor或更高权限的角色,才能读取数据库的状态信息。
  • 认证方式:示例中使用服务主体认证,你也可以根据场景切换为其他认证方式(如用户交互认证)。

内容的提问来源于stack exchange,提问作者Mark C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:00:05