使⽤sqlexpress的数据库连接配置,使⽤附加数据库⽅式
<add name="applicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFileName=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
Integrated  Security默认值是False,此时需要提供Uid和Pwd,即将以Sql  Server  ⽤户⾝份登陆数据库;如果设置为True,Yes  或SSPI,这不能出现Uid和Pwd,将以Windows⽤户省份登陆数据库。强烈推荐⽤后⼀种形式,安全性更⾼。
User Instance
A value that indicates whether to redirect the connection from the default SQL Server Express instance to a runtime-initiated instance running under the account of the caller.
曾经,要运⾏ SQL Server 数据库,就必须在实例下创建数据库,不管是直接创建、还是附加、还是还原,总之都得在实例下创建,但这造成⼀个问题,我们的权限不够⾼,⽆法将数据库附加或还原到 SQL Server,我们只是有 .mdf、.ldf ⽂件。
从 SQL Server 2005 开始,有了新选择
在连接字符串中使⽤ AttachDbFilename,可直接连接到⼀个数据库⽂件。⽐如是这样的:
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Data.mdf;Integrated Security=True;User Instance=True
这⾥ User Instance 就是⽤户实例,为 True,表⽰使⽤⽤户实例。
那什么是⽤户实例呢?
先看看实例
SQL Server 实例是⼀个在服务器上运⾏的 SQL Server 可执⾏程序。每个实例都有⼀个名称,内存中的⼀个 进程、缓冲区内存、它⾃⼰的系统数据库副本,以及它⾃⼰的⼀组⽤户数据库。例如,默认情况下,SQL Server Express 作为⼀个名为“SQLEXPRESS”的实例安装。通过在连接字符串中指定带有服务器名称的实例名,可以连接到已命名的实例。这就是在连接到本地 SQL Server Express 数据库时通常将“.\SQLEXPRESS”指定为服务器名的原因。点(.)意味着本地服务器,\SQLEXPRESS 指定了 SQLEXPRESS 命名实例。
再看⽤户实例
⽤户实例是对实例的扩展。⽤户实例与普通实例类似,但它是在需要的时候创建,⽽普通实例是在安装期间创建的。
⽤户实例必须由⽗实例创建,所以使⽤⽤户实例时,我们也不能省略 Data Source。
谁打开了数据库连接,谁就是这个⽤户实例的运⾏帐户,⽐如 IUSR_Cftea 运⾏着⽹站,它打开了带⽤户实例的数据库连接,那么这个⽤户实例就是以 IUSR_Cftea 运⾏的。
⽤户实例限制
仅允许本地连接。
不能复制⽤户实例。
分布式查询对远程数据库不起作⽤。
⽤户实例仅在 SQL Server 的 Express Edition 内运⾏。
更详细
以下来⾃ MSDN:
当打开⼀个 User Instance 选项为 True 的连接时会发⽣什么?下列步骤描述⽤户第⼀次打开⼀个⽤户实例连接时发⽣的情况。
SQLClient 逻辑打开⼀个到 SQL Server Express ⽗实例(默认情况下是 .\SQLEXPRESS)的连接。
SQL Server Express 检测到已经设置了 User Instance 选项且该⽤户没有⽤户实例。
将 master 和 msdb 系统数据库⽂件复制到⽤户的⽬录下。在 Sally 的⽰例中,该⽬录为: C:\Documents and Settings\Sally\Local Settings\Application
Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS
这些⽂件是从⼀个在安装⽗实例时创建的模板⽬录复制的。⽤户实例启动后,tempdb、⽇志和跟踪⽂件被写⼊这个相同的⽤户⽬录。
⽗实例模拟正在打开该连接的 Windows ⽤户,并且启动⼀个以该⽤户⾝份运⾏的 副本。系统数据库的位置作为参数传递。⽣成实例的名称。例如: 69651E0A-5550-46。
为新实例创建⼀个命名管道数据库连接。该名称基于实例名。例如:
\\.\pipe\69651E0A-5550-46\tsql\query.
plsql12配置数据库连接
将 AttachDBFilename 参数中指定的数据库⽂件附加到新实例,并⽤该⽂件的完整路径命名该⽂件:
[C:\MYDBPROJECTS\TESTVB1\TESTVB1\DATABASE1.MDF]
命名管道的名称传回到正在打开连接的 SqlClient。
SqlClient 接收到该连接的名称后,关闭到⽗实例的连接。它使⽤返回的命名管道名打开⼀个到该⽤户实例的新连接。
⼀旦为特定⽤户创建了⽤户实例,就会保留系统数据库和命名管道。因此,在第⼀次连接后,后续连接就只需执⾏后两步操作了。
关闭到该实例的最后⼀个连接后,启动的 进程还会继续运⾏⼀段时间。因此,如果打开其他连接,则不需要重新启动该进程。继续运⾏的时间长度是由 sp_configure 选项“⽤户实例超时”设置的。默认情况下,时间长度设为 60 分钟,但是您可以⽤ sp_configure 命令更改它。
此版本的 SQL Server 不⽀持⽤户实例登录标志
运⾏时可能会遇到错误“此版本的 SQL Server 不⽀持⽤户实例登录标志”,前⾯说了⽤户实例仅在 SQL Server 的 Express Edition 内运⾏,如果不是 Express 版本,就不能将 User Instance 设置为 True,或将其去掉。