连接到 SQL Server Express(获得对 SQL Server Express 的访问)
Microsoft 和我希望您使用托管代码来打破对 COM 和 OLE DB 提供程序的依赖性 — 即,SQL Server 提供程序。SqlClient .NET 数据提供程序仍然是最好的选择。如果必须使用 MDAC 和 OLE DB 从基于 COM 的应用程序连接到 SQL Server Express,您可以这么做,但是您无法通过共享的内存提供程序进行连接,并且您将需要确保启动了 SQL Browser 服务。
由于默认安全性设置是集成安全性,您将需要在连接字符串中使用 Integrated Security=SSPI,除非更改为混合模式安全性。您仍然需要在连接字符串中指定初始目录或 Database,以指向 SQL 所针对的特定数据库。当使用 SQL 分析器来监视代码所执行的操作时,我还建议您使用 Application Name 连接字符串参数来唯一地标识您的操作。
使用 AttachDBFilename 进行连接
SQL Server 团队所推荐的新方法是将关键字 AttachDBFilename 添加到连接字符串。如果一直用于 Web 应用程序,对于典型 SQL Server 客户端/服务器前端应用程序而言,这是不常用而且是极少使用的方法。对于说明 SQL Sever 实例的任意连接字符串,您必须按名称(或 IP 地址)指向服务器并提供一个实例名。此外,当使用 AttachDBFilename 关键字指向连接字符串中的文件名时,ADO.NET(或 ADO)会通知目标 SQL Server 实例,您希望将引用的文件“附加”到服务器 — 这样,在打开连接的过程中会将该数据库注册在 SQL Server Master 数据库中。
在附加数据库后,当您引用数据库时,从此时起,该服务器访问引用的文件 (.MDF) 及其附带日志文件 (.LDF)。因为此处有一个 catch 语句,请务必小心。您必须 在连接字符串中指定 Database 关键字。如果不指定,该服务器则无法确定这个新附加的数据库。代码列表 1 显示了被配置为附加并打开一个 .MDF 文件的 ADO.NET Sqlclient.SqlConnection 对象的示例。
代码列表 1. 使用 AttachDBFilename 关键字连接到 SQL Server .MDF 文件。
Try
cn = New SqlConnection("Data Source=.\SQLExpress;" _
& "Integrated Security=True;Database=Biblio;" _
& "Timeout=60;" _
& "Application Name=SQLExpress Test;" _
& "AttachDBFilename=" & strFn)
da = New SqlDataAdapter("SELECT AU_ID, Author, Year_Born from authors", cn)
ds = New DataSet
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
|
提示 将新数据库附加到 Master 的过程比简单地打开它要花费更多的时间。确保设置连接字符串 Timeout 关键字,以考虑该增加的时间。
管理附加的 .MDF 数据库文件
尽管打开连接的过程会附加一个数据库,但是当应用程序关闭该连接时,数据库并没有分离。一旦附加,它会永久性地安装在 SQL Server 实例中。这意味着在应用程序结束后,数据库本身对任何应用程序都是可视的,且带有足够的权限。它还表示您需要负责在带有其他应用程序文件的相同目录中维护数据库文件。由于在 SQL Server 运行时,文件受到 Windows 的保护,所以在没有首先从数据库分离时,它不应该被“更新的”版本所覆盖。当然,分离并不困难。您可以从 SQLCMD 中使用以下命令,或使用 SQL Server 2005 GUI 管理工具。另一种方法是使用当使用该数据库的所有应用程序结束时自动关闭数据库文件的 AutoClose 选项。
EXEC sp_detach_db 'MyDb'
GO
|
请记住要将数据库文件保存在本地硬盘上,而不是保存在共享的网络服务器上。强制 SQL Server 执行通过线缆的物理 I/O(即使它支持该操作)是非常危险的,并且它确实会降低您的性能。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 4 5 6 78 9 下一页
上一篇:SQL Server的Collate语句需注意 下一篇:教你几个日期比较的SQL SERVER语句
|