【问题标题】:What is the point of "Initial Catalog" in a SQL Server connection string?SQL Server 连接字符串中的“初始目录”有什么意义?
【发布时间】:2009-12-22 23:02:30
【问题描述】:

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

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

我需要初始目录设置吗? (显然不是,因为我正在开发的应用似乎可以在没有它的情况下运行。)

那么,它有什么用呢?

【问题讨论】:

  • 嗯,我刚刚发现我的应用程序将我创建的所有表都放在了 master 中。哎呀。我可能刚刚知道了我的问题的答案。

标签: sql-server database sql-server-2005 connection-string database-connection


【解决方案1】:

如果连接字符串中的用户名可以访问多个数据库,您必须指定您希望连接字符串连接到的数据库。如果您的用户只有一个可用的数据库,那么您是正确的,这并不重要。但是最好把它放在你的连接字符串中。

【讨论】:

  • 不完全正确。登录名可能没有默认数据库的权限。因此,您需要在连接时更改数据库上下文
  • 如果您使用 -ConnectionStringName 参数指定,这对于实体框架是必需的,因此绝对是一种很好的做法,但有时也需要!
  • 你能改写这个答案吗?看了两遍还是不明白。
【解决方案2】:

这是连接时数据源的initial database

为清晰起见进行了编辑

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

【讨论】:

  • 第一部分是正确的。第二部分不正确。创建帐户时,会为其分配一个默认数据库,如果未指定初始目录,则将使用该数据库。这通常默认为 master(出于某种未知原因)。
  • 当我说“默认”时,我的意思是当您没有在对象名称中限定数据库时。无论如何,我已经澄清了我的答案。
  • 我喜欢安迪的澄清,其实他的评论很有帮助;这不是暗示如果我确实在我的对象名称中限定每个数据库,那么初始目录就没有那么重要/无关紧要了吗?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多