66

我曾经看到每个SQL Server连接字符串看起来是这样的:SQL Server连接字符串中“Initial Catalog”的含义是什么?

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database; 
    Integrated Security=SSPI; 

我需要的初始目录设置? (显然不是,因为我正在工作的应用似乎没有它的工作。)

那么,它是什么?

+24

嗯,我刚刚发现,我的应用程序把我所有创建的表格放在主表中。哎呀。我可能刚刚学会了我的问题的答案。 – 2009-12-22 23:12:08

回答

38

如果作为连接字符串的用户可以访问多个数据库,则必须指定要连接字符串连接的数据库。如果你的用户只有一个数据库可用,那么你是正确的,这并不重要。但将它放入连接字符串是一种很好的做法。

+7

不完全正确。登录可能没有默认数据库的权限。因此,您需要更改连接上的数据库上下文 – gbn 2009-12-23 07:30:33

+0

如果您使用-Co​​nnectionStringName参数指定,则这是实体框架所必需的,所以绝对是一种很好的做法,但也需要时间! – 2015-01-01 07:25:44

29

这是连接时数据源的initial database

编辑的清晰度

如果你在你的SQL Server实例多个数据库和你不想使用默认的数据库,你需要一些方法来指定你要使用哪一个。

+1

第一部分是正确的。第二部分是不正确的。当您创建帐户时,会为其分配一个默认数据库,如果未指定初始目录,将使用该数据库。这通常默认为主(由于某些未知的原因)。 – GrayWizardx 2009-12-22 23:09:12

+0

当我说“默认情况下”时,我仅仅是指当您不在对象名称中限定数据库的条件时。无论如何,我已经澄清了我的答案。 – 2009-12-22 23:19:43

8

设置初始目录允许您设置在该连接上运行的查询将默认使用的数据库。如果您没有为与多个数据库存在的服务器建立连接,那么在许多情况下,您将需要在每个查询中都有一条USE语句,以便明确声明您尝试运行查询的数据库。初始目录设置是显式声明默认数据库的好方法。