谈谈 SQL Server Express 中的用户实例

作者:vkvi 来源:ITPOW(原创) 日期:2009-4-8

用户实例只有在使用用于 SQL Server 的 .NET Framework 数据提供程序 (SqlClient) 时该功能才可用。

有什么用?

先看看什么是实例呢?实例是一个在服务器上运行的 SQL Server 可执行程序。每个实例都有一个名称,内存中的一个 sqlservr.exe 进程、缓冲区内存、它自己的系统数据库副本,以及它自己的一组用户数据库。

可以说用户实例和普通实例很相像。

显著的区别是:普通的实例要求以 Windows 管理员的身份运行,而用户实例则不,所以用户实例对于在最小特权的用户帐户 (LUA) 下运行 Windows 的用户很有用。比如 A 打开一个用户实例的连接,那么 A 就作为该实例的服务帐户,所以它对该实例的所有数据库具有完全管理员权限,即使 A 不是 Windows 管理员。

还有一些区别是:对用户实例运行的数据库仅以单用户模式打开,而且还将对用户实例禁用复制和分布式查询。

用户实例如何工作?

为每个用户首次生成用户实例时,会将 master 和 msdb 系统数据库从模板数据文件夹复制到用户的本地应用程序数据存储库目录下的某个路径中,以供用户实例专用。此路径通常为 C:\Documents and Settings\<UserName>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS。启动用户实例时,tempdb、日志和跟踪文件也将被写入到此目录中。将为该实例生成一个名称,且保证此名称对每个用户均是唯一的。

如何连接到用户实例?

Data Source=.\SQLExpress;Integrated Security=true;
User Instance=true;AttachDBFilename=|DataDirectory|\InstanceDB.mdf;
Initial Catalog=InstanceDB;
  • . 代表本地计算机。
  • SQLExpress 表示一个实例。不像 SQL Server 2000,SQL Server 2000 不需要指明实例。
  • Integrated Security
  • User Instance 是否使用用户实例。
  • AttachDBFilename 数据库文件路径。
  • |DataDirectory| App_Data 路径地址。
  • Initial Catalog 默认数据库。

使用用户实例的注意

通过前面观察我们发现 A 连接到数据库 db1,创建一个用户实例,它具有自己的工作目录,通常是 C:\Documents and Settings\A\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS,而 B 此时也连接到数据库 db1,创建一个用户实例,它也具有自己的工作目录,通常是 C:\Documents and Settings\B\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS。此时数据库中的数据可能就会造成一系列问题,比如不一致。

所以,使用用户实例时,应注意仅允许一个用户连接到数据库。在虚拟主机中:如果没有使用模拟,那么虚拟主机 A 和 B 均是使用 ASPNET 连接的,可以保证是一个用户在连接;如果使用了模拟,那么虚拟主机 A 和 B 使用自己的帐户连接,就会出现两个用户在连接它。关于模拟,请参见:如何创建自定义帐户来运行 ASP.NET

 

相关文章