标签: sqlconnection

如何判断我在Windows服务中打开了多少个SQL连接?

我看到一些错误表明"连接泄漏".也就是说,没有正确关闭的连接和池正在耗尽.那么,我该如何进行检测以确定在给定时间内确切打开了多少?

.net sql-server ado.net sqlconnection

6
推荐指数
1
解决办法
4717
查看次数

如何从SqlConnection对象中"分离"SqlDataReader?

我有一个方法("GetDataReader,"让我们称之为)返回一个SqlDataReader.它位于Singleton DataFactory类中,用于维护与数据库的持久连接.

这样做的问题是,在返回之后,DataReader仍然"连接"到我的DataFactory中的Connection对象.所以,我必须确保调用GetDataReader的代码然后在返回的DataReader上调用Close(),否则,它将"锁定"Connection:

已经有一个与此命令关联的打开DataReader,必须先关闭它.

在从GetDataReader发回DataReader之前,如何"分离"DataReader?要么是,要么克隆它并发回克隆?我不想让调用代码总是明确地关闭它.

这里必须有一个最好的做法.

更新:

谢谢各位的意见.最重要的是,我需要失去使用DataReaders并切换到DataTables的习惯.它们更易于管理.

另外,感谢有关连接池的说明.我知道它,但只是没有把两个和两个放在一起,并意识到我正在重新发明轮子.

c# sqlconnection sqldatareader

6
推荐指数
1
解决办法
6048
查看次数

如何始终保持SqlConnection保持打开状态

如何在执行.Net应用程序期间始终保持SqlConnection(或使用其他组件)打开(连接)?

我需要这个,因为我的应用程序需要使用此commnad进行检测

 exec sp_who2 
Run Code Online (Sandbox Code Playgroud)

我的应用程序的多少个实例连接到mydatabase,以限制访问(许可证控制).

A)我的应用程序从location1执行

  1. 使用查看连接到sql server的应用程序的数量 exec sp_who2
  2. 如果我的应用程序的数量<MaxLicencesConnected然后启动我的应用程序并打开一个sqlconnection

B)我的应用程序从location2执行

  1. 使用查看连接到sql server的应用程序的数量 exec sp_who2
  2. 如果我的应用程序的数量> = MaxLicencesConnected然后关闭我的应用程序

对不起我的英语不好.

提前致谢.

c# ado.net sqlconnection winforms

6
推荐指数
1
解决办法
2719
查看次数

连接池可能存在切断的连接

我有多个线程访问同一个数据库(具有相同的连接字符串).每个帖子:

  • 使用相同的连接字符串创建自己的SqlConnection实例
  • 使用下面的代码在需要时打开它自己的连接实例

        try
        {
            wasOpened = connection.State == ConnectionState.Open;
    
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }
        }
        catch (Exception ex)
        {
            throw new Exception(string.Format("Connection to data source {0} can not be established! Reason: {1} - complete stack {2}",
                                              connection.Database, ex.Message, ex.StackTrace == null ? "NULL" : ex.StackTrace.ToString()));
        }
    
    Run Code Online (Sandbox Code Playgroud)

到目前为止,我们已在2台服务器上测试了此代码,并且有一台服务器有时会在SqlConnection.Open方法中抛出异常.这是我们从catch块获得的异常消息:

无法建立与数据源xyz的连接!原因:操作无效.连接已关闭. - 完整的堆栈

在System.Data.SqlClient.SqlConnection.OpenConnection()
处于System.Data.SqlClient.SqlConnection.OpenConnection()
处于System.Data.SqlClient.SqlConnection.Open()

检查SqlConnection.GetOpenConnection方法显示innerConnection为null:

internal SqlInternalConnection GetOpenConnection()
{
    SqlInternalConnection innerConnection = this.InnerConnection as SqlInternalConnection;
    if (innerConnection == null)
    {
        throw ADP.ClosedConnectionError();
    }
    return innerConnection;
} …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net connection-pooling sqlconnection

6
推荐指数
2
解决办法
1万
查看次数

"using"关键字不会关闭打开的SQL连接

我指的是很久很久以前发布在Stack Overflow上的帖子. 结束使用关闭打开的SQL连接

但是我有一个问题.我发现在SQL 2012 Express Edition和SQL 2008 Developer Edition上使用不会完全关闭连接.

这是我用过的代码.代码将遍历每个数据库并查找指定的特定表,但是,当它完成后,并且在服务器上运行sp_who时,所有连接仍然存在.状态为休眠状态,cmd为"AWAITING COMMAND",但是当您尝试创建数据库时,无法锁定模型,因为您仍然可以打开连接.这是班里的一个错误吗?

using (SqlConnection conn = new SqlConnection("Data Source=" + ServerNameCombo.Text + ";Initial Catalog=master;Persist Security Info=True;User ID=" + UserNameEdit.Text + ";Password=" + PasswordEdit.Text))
{
    using (SqlCommand dbs = new SqlCommand("Select name from sysdatabases", conn))
    {
        conn.Open();
        using (SqlDataReader reader = dbs.ExecuteReader())
        {
            while (reader.Read())
            {
                using (SqlConnection dbconn = new SqlConnection("Data Source=" + ServerNameCombo.Text + ";Initial Catalog=" + reader["name"].ToString() + ";Persist Security Info=True;User ID=" + UserNameEdit.Text + ";Password=" + PasswordEdit.Text)) …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlconnection

6
推荐指数
1
解决办法
1078
查看次数

客户端数据库的连接挂起应用程序

在我的应用程序上,我需要连接客户端数据库(SqlServer),看看我们是否可以连接.这些是来自web.config的连接字符串(值不是这样,我更改了ip,user和pwd)

<add name="ConnectionStringLibracom" connectionString="Data Source=192.168.1.45\SqlServer2008;Initial Catalog=xxx;user=xxx;pwd=xxx;Application Name=MES"
      providerName="System.Data.SqlClient" /> (MINE)
<add name="ConnectionStringMigplus" connectionString="Data Source=999.99.999.99;Initial Catalog=xxx;user=xxx;pwd=xxx"
          providerName="System.Data.SqlClient" /> (CLIENT)
Run Code Online (Sandbox Code Playgroud)

但这段代码挂起了我的整个应用程序(当我说它挂起时,我的意思是它不允许我的应用程序连接到我们的数据库).我在Load事件的Default.aspx上执行它:

protected void Page_Load(object sender, EventArgs e)
{
    if (!TestaIntegracaoErpMigplus())
    {
        lblMensagemIntegracao.Visible = true;
        Session["Integracao"] = false;
    }
    else
        Session["Integracao"] = true;
}

protected static bool TestaIntegracaoErpMigplus()
{
    string connectionStringMigplus = WebConfigurationManager.ConnectionStrings["ConnectionStringMigplus"].ConnectionString;
    bool ret = false;

    using (SqlConnection Conn = new SqlConnection(connectionStringMigplus))
    {
        try
        {
            Conn.Open();
            if (Conn.State == ConnectionState.Open)
            {
                ret = true;
            }
        }
        catch (SqlException)
        {
            ret = false; …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net sqlconnection

6
推荐指数
1
解决办法
1593
查看次数

连接字符串中的用户名和密码如何安全?

在开发Windows应用程序时:

  1. 如何在连接字符串中保护用户名和密码?

  2. 像银行这样的组织,是否会将数据库的用户名和密码提供给应用程序开发人员?如果不是通常的话,那些应用程序开发人员如何编写数据库连接?

  3. 在连接字符串中保护用户和密码的行业标准是什么?

谢谢

c# database ado.net sqlconnection

6
推荐指数
1
解决办法
9460
查看次数

使用 Dapper QueryAsync 方法时 connection.OpenAsync 和 connection.Open 之间的区别

使用 dapper 的 QueryAsync 方法时,使用 connection.OpenAsync() 和 connection.Open() 有什么区别。

异步:

public async Task<IList<Product>> GetListAsync()
    {
        using (var connection = new SqlConnection(_connectionString))
        {
            StringBuilder sql = new StringBuilder();
            sql.AppendLine("SELECT Id, Name ");
            sql.AppendLine("FROM Product ");

            await connection.OpenAsync();
            var tickets = await connection.QueryAsync<Ticket>(sql.ToString());
            return tickets.ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

非异步:

public async Task<IList<Product>> GetListAsync()
{
    using (var connection = new SqlConnection(_connectionString))
    {
        StringBuilder sql = new StringBuilder();
        sql.AppendLine("SELECT Id, Name ");
        sql.AppendLine("FROM Product ");

        connection.Open();
        var tickets = await connection.QueryAsync<Ticket>(sql.ToString());
        return tickets.ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net sqlconnection dapper

6
推荐指数
2
解决办法
5156
查看次数

SQLCommand/SQLConnection与OleDbCommand/OleDbConnection

使用SQLCommand/ SQLConnection而不是OleDbCommand/ 是否有所不同OleDbConnection.从API舒适性,功能,性能或安全性角度来看,我是否从中获得了任何优势?还是其他任何观点?

.net oledb ado.net sqlconnection oledbconnection

5
推荐指数
1
解决办法
4129
查看次数

System.Data.SqlClient.SqlConnection的底层驱动程序

有谁知道是否System.Data.SqlClient.SqlConnection有自己的实现来访问SQL Server?或者它是否使用以下客户端之一:

  • SQL Server 的 OLE DB 提供程序( SQLOLEDB)(已弃用)
  • SQL Server Native Client ( SQLNCLI)(已弃用)
  • SQL Server 的 OLE DB 驱动程序( MSOLEDBSQL)

c# sql-server sqlconnection

5
推荐指数
1
解决办法
1602
查看次数