【问题标题】:Database name after underscore in connection string is being ignored连接字符串中下划线后的数据库名称被忽略
【发布时间】:2012-06-19 14:55:41
【问题描述】:

我正在尝试做一些我认为非常简单的事情。 我有一个从数据库中获取的连接字符串。当我创建一个新的 SQL 连接实例时,它看起来(当我调试和查看对象时)就像它正在正确填充 db 连接字符串一样。但是,我收到的错误消息让我认为数据库名称中下划线后面的所有信息都被删除了。

代码示例:

Database db = new SqlDatabase(ConnectionString); // Connection string appears correct
DbCommand dbCommand = db.GetStoredProcCommand("StoredProcName");
DataSet approverDataset = db.ExecuteDataSet(dbCommand); // when this executes, exception is generated

当我运行此代码时,我收到以下异常消息: 服务器主体“testdb_psidentity”无法在当前安全上下文下访问数据库“testdb”

这是我的连接字符串:

DataSource=testserver.com;Database=testdb_ps;Trusted_Connection=false;uid=testdb_psidentity;pwd=testpwd

我已尝试将其更改为:

DataSource=testserver.com;Database=[testdb_ps];Trusted_Connection=false;uid=testdb_psidentity;pwd=testpwd

虽然这似乎获得了数据库的全名,但它似乎也在寻找名称中包含这些括号的数据库。当我收到此错误时: 无法打开登录请求的数据库“[testdb_ps]”。登录失败。 用户“testdb_psidentity”登录失败。

但是,我可以在 SQL Server Management Studio 中使用该登录名/密码登录连接到数据库。

有什么方法可以让它接受数据库名称 testdb_ps 数据库名称?我无法简单地更改数据库名称,因为我无权访问它,而且我被告知根本不会更改数据库名称。

【问题讨论】:

  • 您的用户“testdb_psidentity”是否对数据库具有连接/执行权限?如果您不确定,您可以通过以下方式检查它 -> 右键单击​​数据库 -> 属性 -> 权限 -> 选择用户并在显式选项卡下检查...
  • 遗憾的是,当我右键单击数据库时,我无权查看此内容。
  • Reach 但尝试将数据源放在语法 [testserver.com] 或 [testserver].[com] 中。并且您确定源的名称是 testserver.com(不是 testserver)。查看 SMSS 中的名称
  • 您的用户名没有访问数据库的权限。检查权限

标签: c# .net sql


【解决方案1】:

您可以尝试在连接字符串周围加上引号,我认为它会将下划线解释为分隔符。

取决于你如何使用它使用引号或

"

【讨论】:

  • 你的报价有问题吗?你是什​​么意思?我试过将它用作字符串变量。我没有尝试过对其进行硬编码,但这在我们的编码标准中通常是不受欢迎的。
  • 通常我们将连接字符串放在 web.config 或 app.config 文件中。这就是为什么我们对 '_' 字符没有真正的问题。但是,如果您必须从数据库中获取连接字符串,则可以尝试先将其写入字符串并发送该字符串。" 在某些情况下使用,当您不能只键入字符时,但如果您在c#中做一个字符串文字你不应该需要它
  • 只是一个建议,但如果这个数据库已经存在了一段时间,那么我会假设其他应用程序使用它?如果是这样,你可以看看他们是怎么做的。
【解决方案2】:

你能通过SQL server management studio连接到数据库吗?

试试

  1. 禁用防火墙
  2. 使用 IP 地址
  3. 明确使用 sql server 实例名称。

【讨论】:

    【解决方案3】:

    使用向导生成实体类。这样,您将在 app.config 中获得编码的连接字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2019-05-20
      相关资源
      最近更新 更多