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

如何将C#应用连接至Google Cloud SQL Server 2022 Express数据库

C#连接Google Cloud托管的SQL Server 2022 Express数据库

前置要求

  • 已获取具有Cloud SQL Client角色的服务账号JSON密钥文件
  • 项目中安装以下NuGet包:
    Install-Package Google.Cloud.SqlConnector
    Install-Package Microsoft.Data.SqlClient
    

设置服务账号环境变量

在终端执行命令(和Python环境一致):

set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\my\serviceAcc.json

正确连接代码示例

基础连接与查询

using Google.Cloud.SqlConnector;
using Microsoft.Data.SqlClient;
using System;

namespace CloudSqlSqlServerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 替换为你的实例连接名(格式:项目ID:区域:实例ID)
            string instanceConnectionName = "data-warehous-511371:europe-west3:test-sql";
            string databaseName = "mytestdb";
            string username = "sqlserver";
            string password = "你的数据库密码"; // 对应Python中读取的密码

            // 初始化SqlConnector,生成符合要求的连接字符串
            var sqlConnector = new SqlConnector();
            string connectionString = sqlConnector.CreateConnectionString(
                instanceConnectionName,
                databaseName,
                username,
                password,
                ipType: IPTypes.Public // 使用公网IP连接,与Python代码保持一致
            );

            // 建立连接并执行查询
            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
                Console.WriteLine("连接成功!");

                using (var command = new SqlCommand("SELECT * FROM dbo.testtable", connection))
                {
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            // 示例:输出每行第一列的值,可根据实际表结构调整
                            Console.WriteLine(reader[0].ToString());
                        }
                    }
                }
            }
        }
    }
}

连接池实现(类似Python的SQLAlchemy连接池)

如果需要复用连接,可使用连接池:

using Google.Cloud.SqlConnector;
using Microsoft.Data.SqlClient;
using System;

namespace CloudSqlSqlServerPoolDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string instanceConnectionName = "data-warehous-511371:europe-west3:test-sql";
            string databaseName = "mytestdb";
            string username = "sqlserver";
            string password = "你的数据库密码";

            var sqlConnector = new SqlConnector();
            var poolOptions = new SqlConnectionPoolOptions
            {
                ConnectionString = sqlConnector.CreateConnectionString(
                    instanceConnectionName,
                    databaseName,
                    username,
                    password,
                    ipType: IPTypes.Public
                ),
                MinimumPoolSize = 2,
                MaximumPoolSize = 10 // 根据业务调整连接池大小
            };

            // 创建连接池
            using (var pool = new SqlConnectionPool(poolOptions))
            {
                // 从连接池获取连接
                using (var connection = pool.GetConnection())
                {
                    connection.Open();
                    Console.WriteLine("从连接池获取连接成功!");

                    // 执行查询逻辑...
                }
            }
        }
    }
}

为什么之前的代码失败

你之前的连接字符串格式错误:SQL Server的标准连接字符串不支持projects/{projectId}/instances/{instanceId}/databases/{databaseName}这种格式,必须通过Google提供的SqlConnector来生成正确的连接字符串,它会自动处理Cloud SQL的IP解析、代理连接及服务账号认证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:45