SQL Server连接字符串中“初始目录”的含义是什么?


91

我见过的每个SQL Server连接字符串看起来都是这样的:

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

我是否需要“初始目录”设置?(显然不是,因为我正在使用的应用似乎没有它就可以使用。)

那么,这是为了什么呢?


31
嗯,我刚刚发现我的应用将所有创建的表都放在了master中。哎呀。我可能刚刚了解了我的问题的答案。
Ryan Lundy

Answers:


53

如果连接字符串中的用户名可以访问多个数据库,则必须指定一个数据库,您希望连接字符串连接到该数据库。如果您的用户只有一个数据库可用,那么您没关系,那是正确的。但是,最好将其放在连接字符串中。


10
不太正确。登录名可能没有默认数据库的权限。因此,您需要在连接时更改数据库上下文
gbn

如果使用-Co​​nnectionStringName参数指定,则对于实体框架而言,这是必需的,因此绝对是一种好的做法,但有时也是必需的!
James G

你能改写这个答案吗?看完两次后,我还是听不懂。
thatWiseGuy

33

连接时,这是数据源的初始数据库

为清楚起见进行了编辑

如果SQL Server实例中有多个数据库,并且不想使用默认数据库,则需要某种方式来指定要使用的数据库。


1
第一部分是正确的。第二部分不正确。创建帐户时,将为其分配一个默认数据库,如果未指定初始目录,则将使用该数据库。这通常默认为master(出于某些未知原因)。
GrayWizardx

当我说“默认情况”时,我的意思只是说您不符合对象名称中的数据库条件。无论如何,我已经澄清了答案。
安迪·韦斯特

我喜欢安迪的澄清,实际上他的评论很有帮助;这是否意味着如果我确实用对象名称限定了每个数据库,那么初始目录就没有那么重要/无关紧要了吗?
红豌豆

12

通过设置初始目录,您可以设置默认情况下在该连接上运行的查询将使用的数据库。如果您没有为与存在多个数据库的服务器的连接设置此设置,则在许多情况下,您将需要在每个查询中都具有​​USE语句,以便明确声明您要在哪个数据库上运行查询。初始目录设置是显式声明默认数据库的好方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.