我想知道使用Windows身份validation连接到Winforms应用程序中的SQL服务器与使用SQL身份validation的性能影响。 在我们当前的模型中,每个人都在应用程序中存储的连接string中使用相同的用户名和密码。 使用该应用程序的每个人总是在同一个域中,无论是在实际的办公室,还是通过VPN连接。 在任何时候,大约有五十人可以使用该应用程序。
我被告知可能有连接池问题,因为连接通过连接string和Windows标识分离到池中。
莫洛奇是正确的。 这通常与具有大量连接的三层应用程序有关,应用程序服务器代表客户端连接到数据库。 在这种情况下,当使用集成身份validation时,由于池无法在身份之间共享,因此需要有多个池。
“…只有具有相同configuration的连接才能被合并,ADO.NET同时保留多个池,每个configuration一个,通过连接string将连接分成池,使用集成安全性时,通过Windows身份分离。也是根据他们是否参与交易而合并的。“
换句话说,利用sql安全性,而不是集成安全性,利用连接池的好处更为明显。
SQL Server连接池
http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
连接池在客户端完成,而不是在服务器端,所以在那里没有问题。 每个客户端将打开并保持一定数量的连接,以便根据提供者(ADO.NET,OLE DB,ODBC,本机客户端)和设置通过应用程序的生命周期来重用。
在服务器端,sql实例受@@ MAX_CONNECTIONS设置的限制,该设置与使用的login次数或authentication方法无关。