.NET 数据访问体系结构指南二
更多信息
当使用 SQL Server .NET 数据提供程序连接池时,请注意以下几个方面:
• |
连接是通过连接字符串上的完全匹配算法进行池化的。池机制甚至对名称-值对之间的空格也敏感。例如,下面的两个连接字符串将导致两个独立的池,因为第二个连接字符串包含额外的空格字符。 SqlConnection conn = new SqlConnection( "Integrated Security=SSPI;Database=Northwind"); conn.Open(); // Pool A is created SqlConmection conn = new SqlConnection( "Integrated Security=SSPI ; Database=Northwind"); conn.Open(); // Pool B is created (extra spaces in string) |
• |
连接池被划分为多个事务专有池和一个与当前尚未在事务中登记的连接对应的池。对于与特定事务上下文关联的线程,会返回相应池(该池包含在该事务中登记的连接)的连接。这就使得使用已登记的连接成为一个透明的过程。 |
OLE DB .NET 数据提供程序的池机制
OLE DB .NET 数据提供程序通过使用基础 OLE DB 资源池来池化连接。有多个用于配置资源池的选择:
• |
可以使用连接字符串来配置、启用或禁用资源池。 |
• |
可以使用注册表。 |
• |
可以用编程方式配置资源池。 |
为避免出现与注册表相关的部署问题,请不要使用注册表来配置 OLE DB 资源池。
监控连接池
要对应用程序使用连接池的情况进行监控,可以使用 SQL Server 随附的事件探查器工具,或者使用 Microsoft Windows? 2000 操作系统随附的性能监视器工具。
使用 SQL Server 事件探查器监控连接池
1. |
单击 Start,指向 Programs,指向 MicrosoftSQLServer,然后单击 Profiler 以启动事件探查器。 |
2. |
在 File 菜单上,指向 New,然后单击 Trace。 |
3. |
提供连接详细信息,然后单击 OK。 |
4. |
在 Trace Properties 对话框中,单击 Events 选项卡。 |
5. |
在 Selected event classes 列表中,确保 Audit Login 和 Audit Logout 事件显示在 Security Audit 下面。要使跟踪变得更为清晰,请从该列表中删除所有其他事件。 |
6. |
单击 Run 以启动跟踪。当连接建立时,您将看到 Audit Login 事件;当连接关闭时,您将看到 Audit Logout 事件。 |
使用性能监视器监控连接池
1. |
单击 Start,指向 Programs,指向 Administrative Tools,然后单击 Performance 以启动性能监视器。 |
2. |
右键单击图形背景,然后单击 AddCounters。 |
3. |
在 Performance object 下拉列表中,单击 SQL Server:General Statistics。 |
4. |
在显示的列表中,单击 User Connections。 |
5. |
单击 Add,然后单击 Close。 |
管理安全性
尽管数据库连接池提高了应用程序的总体可伸缩性,但这意味着您不再能够在数据库级别管理安全性。这是因为,要支持连接池,连接字符串必须完全相同。如果您需要跟踪每个用户的数据库操作,请考虑添加一个参数,以便能够传递用户标识并在数据库中手动记录用户操作。您需要将该参数添加到每个操作中。
使用 Windows 身份验证
在连接到 SQL Server 时,应该使用 Windows 身份验证,因为它提供了许多好处:
1. |
安全性更易于管理,因为您使用单一 (Windows) 安全模型,而不是独立的 SQL Server 安全模型。 |
2. |
可避免将用户名和密码嵌入到连接字符串中。 |
3. |
不会以明文方式通过网络传递用户名和密码。 |
4. |
通过采用密码到期期限、最小长度以及在多次无效登录请求后锁定帐户,改善了登录安全性。 |
存储连接字符串
要存储数据库连接字符串,可以有多种选择,这些选择具有不同级别的灵活性和安全性。尽管在源代码中对连接字符串进行硬编码可提供最佳性能,但文件系统缓存可确保在外部将该字符串存储到文件系统中所带来的性能下降是微不足道的。几乎在所有情况下,人们都首选外部连接字符串所提供的额外的灵活性(它支持管理员配置)。
当您选择连接字符串存储方法时,需要注意的两个最重要的事项是安全性和配置简易性,然后紧跟着的是性能。
可以选择下列位置来存储数据库连接字符串:
• |
在应用程序配置文件中;例如,ASP.NET Web 应用程序的 Web.config |
• |
在通用数据链接 (UDL) 文件中(仅由 OLE DB .NET 数据提供程序支持) |
• |
在 Windows 注册表中 |
• |
在自定义文件中 |
• |
在 COM+ 目录中,方法是使用构建字符串(仅适用于服务组件) |
通过使用 Windows 身份验证来访问 SQL Server,可以避免将用户名和密码存储在连接字符串中。如果您的安全要求需要采取更严格的措施,请考虑以加密格式存储连接字符串。
对于 ASP.NET Web 应用程序而言,在 Web.config 文件内以加密格式存储连接字符串,代表着一种安全的、可配置的解决方案。
注 可以在连接字符串中将 Persist Security Info 命名值设置为 false,以禁止通过 SqlConnection 或 OleDbConnection 对象的 ConnectionString 属性返回对安全敏感的细节(如密码)。
下面几小节讨论了如何使用各种选择来存储连接字符串,并介绍了各种方法的相对优点和缺点。这些内容有助于
补充:Web开发 , ASP.Net ,