zoukankan      html  css  js  c++  java
  • 关于SQL SERVER 数据链接字符串的MultipleActiveResultSets的说明

     近期的一个项目是关于不同数据库同步的操作,考虑到数据的及时性,应用程序的性能,在数据库链接字符串中加入MultipleActiveResultSets;

    MultipleActiveResultSets的作用是指定多活动的结果集是否与指定的链接相互关联;类型是bool类型;true代表与指定的链接关联;false代表与指定的链接不关联;默认是false;

    举个例子(以控制台应用程序为例):

    View Code
     SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
                sb.DataSource = ".";
                sb.InitialCatalog = "Neo_OA";
                sb.IntegratedSecurity = true;
                using (SqlConnection con = new SqlConnection(sb.ConnectionString))
                {
                    string sql = "select count(0) from userinfo";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    con.Open();
                    object ob = cmd.ExecuteScalar();
                    if (ob == null)
                    {
                        Console.WriteLine(0);
                    }
                    else
                    {
                        Console.WriteLine(Convert.ToInt32(ob));
                    }
                }
                Console.ReadLine();

    利用sql server自带的存储过程sp_who来监测我们的进程信息;

    打开我们dug文件下面的exe文件多个,在sql server中执行存储过程sp_who,此时我们会发现在显示列表中,出现多项dbName 是NEO_OA(我用的是这个数据库)的。

    可以看出数据库建立链接多次;

    修改以上程序:

    View Code
      SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
                sb.DataSource = ".";
                sb.InitialCatalog = "Neo_OA";
                sb.IntegratedSecurity = true;
                sb.MultipleActiveResultSets = true;
                using (SqlConnection con = new SqlConnection(sb.ConnectionString))
                {
                    string sql = "select count(0) from userinfo";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    con.Open();
                    object ob = cmd.ExecuteScalar();
                    if (ob == null)
                    {
                        Console.WriteLine(0);
                    }
                    else
                    {
                        Console.WriteLine(Convert.ToInt32(ob));
                    }
                }
                Console.ReadLine();

    仍然按照钢材方式,发现此时没有出现多项是DBNAME是NEO_OA的情况,也就是说重用了第一次打开时所用的链接。

    数据库的打开与关闭是很消耗系统的性能,利用这种对链接的关联方式可以减轻系统的负担。

  • 相关阅读:
    如何动态加载控件以及插件编程思想(C#)
    Web Services的魅力
    Remoting和Webservice的区别
    用Asp.Net c#写的采集小例子
    .net remoting范例
    C# 实现屏幕键盘 (ScreenKeyboard)
    初识用.NET Remoting来开发分布式应用(转)
    把页面以流的形式输出 在另外一个页面显示
    webservice的应用
    【表单】鼠标经过时获得焦点,获得焦点时选中文本
  • 原文地址:https://www.cnblogs.com/hfliyi/p/2472950.html
Copyright © 2011-2022 走看看