在做项目中,常常使用到数据库连接串,大家都多少的用到过,但你对其中的各参数熟悉吗?深入的使用你了解多少,Max Pool Size什么意思,有何影响?
commandtimeout你设置了吗?这些东西也许你并不太注意,下文就结合个人的应用,对这些连接串相关的内容进行说明。
在SQLServer数据库中,常用的数据库连接串一般都是这样书写的:
这是最常用的一种写法,在Data Source中指定数据源,Initial Catalog中指定数据库名称,User ID指定数据库用户名,Password中设定对应用户名的密码。
指定如上内容,即可实现数据库的连接操作了,但在实际应用中,往往仍需要做额外的操作。
指定数据库连接端口,默认是1433,如果特殊设定,则需要在此串中进行单独定义,具体位置在Data Source={0},{1} 通过“,” 添加在服务器地址后边,
对于有特殊端口设置的应用,此方法是必须的。
Max Pool Size 这个属性指定数据库连接池的大小,此属性可不能忽视,在项目中数据库连接串大家都是直接复制使用而没有细看每个属性的意义,在应用中
会发现很多问题。在一个项目中,我直接使用Max Pool Size=30,本机运行没任何问题,但到客户端进行测试中,发现当服务连接几十台客户机后,客户机都提示连接数据库失败,最后才发现此处的设置。那么Max Pool Size指定了数据库最大的缓冲池,超过此缓冲池的新连接只能进行等待,当有连接释放时,才能进入。
因此Max Pool Size 应该根据实际情况进行设定,那是否设置越大越好了,个人感觉这个可能要与服务器的综合配置有关,如果客户机环境没那么多设置过大是否会造成资源的浪费呢。
另外一个commandtimeout指定操作的时间,如果在指定时间内无响应则返回失败,单位是秒。此属性我个人一般不在连接串中进行设置,一般在SqlCommand中进行指定。具体应用场景一般设置数据库连接后都会有测试连接按钮,如果数据库连接正常,点击后立即会返回连接成功或连接失败字样。这效果挺好,但如果此时设置连接信息错误,你会发现连接测试结果很漫长,等待返回结果的过程,很卡。能否有方法改善一下这种效果,那就需要设定commandtimeout,简单的一个属性即可完成想要的效果。
因为数据库连接设置有误后他会一直尝试进行连接,不到commandtimeout规定的时间,不会返回结果。默认值是30秒,很漫长哦。检测连接是一个很简单的操作不会涉及复杂的操作,因此完全可以设置在几秒内完成。
数据库知识很深,关于数据库的操作目前有封装好的类,可以直接调用,但个性的设置还需要对每个细节进行熟悉,掌握和应用。
最后附上数据库连接串的一个示例,仅供参考: