一般在写数据库连接串的时候,
我们都用IP地址或者计算机名(Local、127.0.0.1)写好就完事了。
最近一段时间研究发现其实并不是那么简单的。
数据库有多实例场景,而在多实例的机器上如何选择正确的数据库就是个问题。
我们一般都是如下写法:
Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=127.0.0.1
我们在数据库的配置管理器中看到了数据库的协议包含
共享内存、命名管道、TCP/IP、VIA、
我们选择windows账号登陆又是怎么回事?
如果我们只写了IP+实例(计算机名+实例),后面没有其他说明。
呵呵,微软就不管哪个,只要能连上,就OK。不具体指定指定哪一个方式。
如果想查看当前使用的是那种协议,使用如下SQL语句:
SELECT net_transport FROM sys.dm_exec_connections WHERE session_id = @@SPID;
这个多协议我们在写好连接串后,我们能否指定一个协议呢。
回答是肯定的。
TCP/IP
Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=127.0.0.1,1234
命名管道
Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=//127.0.0.1/pipe/sql/query
共享内存
同一台计算机使用,没有可配置的属性。
从msdn上摘一段话
从运行在同一台计算机上的客户端到 Microsoft SQL Server 的连接使用共享内存协议。共享内存没有可配置的属性。始终会先尝试使用共享内存,无法将其从“客户端协议属性”列表中“启用的协议”列表的顶部位置移开。可以禁用共享内存协议,在排除其他某个协议的故障时,这样做很有用。
via
以后微软要抛弃它。