1

我有以下连接字符串:

<add name="xx" 
  connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=abc;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\abc.mdf" 
  providerName="System.Data.SqlClient" />

有人可以解释初始目录的含义。我可以有两个连接字符串指向同一个数据文件但不同的目录吗?

4

2 回答 2

4

LocalDb 的正常用途是使用 AttachDBFilename,程序将创建一些 GUID,例如通常被忽略的目录名称。如果 SQL 实例不存在,则在首次访问文件时创建该实例。该实例可能不存在,并且可能在使用之间被任意删除。一切都围绕 *.mdf 文件。这些程序也由最终用户安装,这些最终用户除了安装了 LocalDB 外,不会对 SQL 做任何事情。

如果您想为您的数据库指定一个特定的名称,以便您可以轻松地在 master 中交互引用它,该怎么办?然后您还需要使用初始目录。特别是我发现,如果我不同时使用两者,那么我无法使用主服务器中的 sp_detach_db 将我的数据库与代码分离,因为我不知道名称。

同时使用 InitialCatalog 和 AttachDbFilename 不会是多余的,因为您首先需要 AttachDBFilename,因为数据库尚不存在,只是文件,并且您需要 Initial Catalog 与主数据库中的数据库进行交互。

如果我真的错了,请纠正我,因为我已经使用这项技术一年多了,并且有很多我自己的问题,我已经问过没有人回答。

于 2014-06-27T19:05:59.570 回答
3

初始目录是连接字符串所针对的服务器上的数据库。

是的,您可以有多个指向不同数据库的连接字符串。数据源将是服务器名称,初始目录是数据库名称。

编辑:( 在这里处理评论,因为它在评论中看起来很糟糕)

不知道你所说的数据文件是什么意思。假设您在本地计算机上设置了一个 SQL Server 实例,其中包含两个名为 Geography 和 Reports 的数据库。您可以有两个连接字符串,如下所示:

<add name="Geo" connectionString="Data Source=localhost;Initial Catalog=Geography;Trusted_Connection=True;persist security info=False;integrated security=SSPI;" providerName="System.Data.SqlClient"/>

<add name="Rep" connectionString="Data Source=localhost;Initial Catalog=Reports;Trusted_Connection=True;persist security info=False;integrated security=SSPI;" providerName="System.Data.SqlClient"/>
于 2013-03-06T15:13:01.683 回答