我的SQL Server本地数据库中的初始目录是什么?

时间:2013-03-06 15:10:46

标签: sql-server entity-framework

我有以下连接字符串:

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

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

2 个答案:

答案 0 :(得分:4)

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

如果您想拥有数据库的特定名称,以便您可以轻松地在主数据库中进行交互,该怎么办?然后你也需要使用初始目录。 特别是我发现如果我不使用两者,那么我不能使用master中的sp_detach_db从代码中分离我的数据库,因为我不知道名字。

使用InitialCatalog和AttachDbFilename并不是多余的,因为您首先需要AttachDBFilename,因为数据库尚不存在,只有文件,并且您需要初始目录与主数据库中的数据库进行交互。

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

答案 1 :(得分:3)

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

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

修改 (在这里发表评论,因为评论中看起来很糟糕)

不确定数据文件的含义。假设您在本地计算机上设置了一个SQL Server实例,其中包含两个名为Geography and Reports的DB。您可以使用以下两个连接字符串:

<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"/>