我想知道在 Winforms 应用程序中使用 Windows 身份验证连接到 SQL 服务器与使用 SQL 身份验证对性能的影响。在我们当前的模型中,每个人都在应用程序中存储的连接字符串中使用相同的用户名和密码。使用该应用程序的每个人都在同一个域中,无论是在实体办公室还是通过 VPN 连接。在任何时候,大约有五十个人可能正在使用该应用程序。
有人告诉我连接池可能存在问题,因为连接通过连接字符串和 Windows 标识分成多个池。
答案1
Molotch 是正确的。这通常与具有大量连接的三层应用程序有关,其中应用程序服务器代表客户端连接到数据库。在这种情况下,当使用集成身份验证时,需要有多个池,因为池不能跨身份共享。
“...只有具有相同配置的连接才能被池化。ADO.NET 同时保留多个池,每个配置一个。连接通过连接字符串分为不同的池,使用集成安全性时则通过 Windows 标识分为不同的池。连接也根据它们是否被列入事务而分为不同的池。”
换句话说,使用 SQL 安全性时,利用连接池的好处更加明显,而不是集成安全性。
SQL Server 连接池
http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
答案2
连接池是在客户端而不是服务器端完成的,所以这里没有问题。每个客户端将根据提供程序(ADO.NET、OLE DB、ODBC、本机客户端)和设置打开并维护一定数量的连接,以便在应用程序生命周期内重复使用。
在服务器端,sql 实例受到 @@MAX_CONNECTIONS 设置的限制,该设置与使用的登录次数或身份验证方法无关。