我刚刚在“Google Cloud Platform”上设置了一个 SQL Server。我在那里创建了一个数据库和表。我使用微软的“SQL Server Management Studio”(SSMS)来连接并创建数据库和表。这一切都奏效了。我根据Google的Cloud SQL说明设置了代理地址127.0.0.1:1443。这一切都奏效了。
但是,我想要做的是使用 C# 应用程序连接到此远程服务器。我使用 C# 程序连接到我的计算机上的 SQL Server 没有问题,但我不知道如何配置以连接到 Google Cloud Platform 上的远程 SQL Server。
对于我的代码,我使用的是System.Data.SqlClient
图书馆。
我的连接字符串如下。希望下面的代码足以告诉您发生了什么。当我打电话时loadInfoFromDatabase()
,当它点击`connection.Open()时就会失败。我在下面的代码中在它旁边写了“FAILS HERE”。
连接字符串是在尝试不同的事情后的一些猜测。任何帮助,将不胜感激。
Thanks!
public string _connectionString = @"Server=127.0.0.1:1443;Database=MarsDatabase;User Id=sqlserver;Password=AAABBBCCC";
private void loadInfoFromDatabase()
{
string firstName, middleName, lastName, email, password, assignedTables;
string connectionString;
SqlDataReader dataReader;
connectionString = _connectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open(); //FAILS HERE...
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("loadInfoFromDatabse");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText = "Select * From Info";
// Attempt to commit the transaction.
dataReader = command.ExecuteReader();
while (dataReader.Read())
{
...
}
dataReader.Close();
command.Dispose();
// connection.Close();
transaction.Commit();
Console.WriteLine("Selection from managers table worked.");
}
catch (Exception ex)
{
}
}
}
我发现您正在使用 Cloud SQL 代理通过 TCP 连接到 SQL Server 实例。
问题出在您的连接字符串上,因为您缺少 TCP 前缀。通过查看Server
on ConnectionString https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=dotnet-plat-ext-5.0#definition您可以在属性中看到描述:
TCP 格式必须开始带有前缀“tcp:”。 (例如服务器 = tcp:服务器名称,端口号)
要解决此问题,请将连接字符串更改为:
@"Server=tcp:127.0.0.1,1443;Database=MarsDatabase;User ID=sqlserver;Password=AAABBBCCC";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)