gpt4 book ai didi

c# - Azure SQL - 单个或多个数据库连接?

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:00 25 4
gpt4 key购买 nike

我有客户端-服务器应用程序,其中服务器端是 Azure WCF 服务,数据位于 SQL azure 数据库中。客户端是 Windows Phone 7 silverlight 应用程序。客户端和服务器通过WCF进行通信。服务器向客户端提供存储在 Azure SQL 数据库中的数据。

我最近遇到了一些池问题。每当客户请求到达时,我都会创建新对象。我没有关闭此连接,很快就遇到了异常:

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

我的问题是 - 应如何处理与数据库的连接对象?我应该为每个客户端请求创建一个连接对象,还是应该创建应该处理对数据库的所有调用的单例对象?是否有可能 - 连接对象在一段时间或其他时间后不会超时?

我正在使用 SQLConnection 对象:

private static SqlConnection connection
{
get
{
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder
{
DataSource = DB_SOURCE,
InitialCatalog = DB_NAME,
Encrypt = false,
TrustServerCertificate = false,
UserID = DB_USER,
Password = DB_PASS,
};
SqlConnection c = new SqlConnection(connectionStringBuilder.ToString());
c.Open();
return c;
}
}

public static void execute(String query)
{
try
{
SqlCommand com = new SqlCommand(query, connection);
com.ExecuteNonQuery();
}
finally
{
connection.Close();
}
}

最佳答案

默认情况下,SQL 连接是池化的。因此,您应该在需要时“创建”它们,并在完成后销毁它们。 (如果您使用 using 而不是 try/finally,您的代码会更简单。)

关于c# - Azure SQL - 单个或多个数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com