【问题标题】:If add [user instances=true] to connection string, an exception is thrown如果将 [user instances=true] 添加到连接字符串,则会引发异常
【发布时间】:2012-03-04 14:28:10
【问题描述】:

异常详情:

System.Data.SqlClient.SqlException:无法打开登录请求数据库“RealtyDB” 登录失败。帐号“FAFHN24BNK43\JKAD754”登录失败。

我的连接字符串如下所示:

add name = "ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;User Instance=True;Initial Catalog=RealtyDB;Integrated Security=SSPI;"
         providerName="System.Data.SqlClient"       

如果我删除了[User Instance=True;],我的应用程序就可以了。

有人知道为什么吗?

【问题讨论】:

  • 抛出的异常是什么?
  • 您是否故意使用[用户实例]?你能解释一下你为什么使用它吗? (换句话说,我的回答是,“医生,我这样做会很痛。”医生:“不要那样做。”)
  • @AaronBertrand 我只想知道为什么。

标签: .net sql-server ado.net connection-string


【解决方案1】:

我只见过与AttachDbFileName 结合使用的用户实例功能。换句话说,您不能连接到已经连接到正在运行的 SQL Server 实例的数据库,并告诉 SQL Server 为该数据库启动一个新实例,因为只有一个实例可以“拥有”一个数据库时间。当您使用AttachDbFileName 时,它会告诉 SQL Server 制作该 MDF 文件的副本以供应用程序使用。

因此,除非您打算以这种方式使用此功能,否则我再次建议您从连接字符串中取出 User Instance = true 参数。

(有趣的是,这个有问题的有用功能已被弃用。)

【讨论】:

    【解决方案2】:

    我同意 Aaron Bertrand 的观点。连接字符串应该是这样的,

    connectionString= "data source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDBFilename=|DataDirectory|\appdb.mdf; User Instance=true"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多