5

我正在尝试做一些我认为非常简单的事情。我有一个从数据库中获取的连接字符串。当我创建一个新的 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 数据库名称?我无法简单地更改数据库名称,因为我无权访问它,而且我被告知根本不会更改数据库名称。

4

3 回答 3

1

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

根据您使用它的方式使用引号或

"
于 2012-06-19T15:08:17.947 回答
0

您可以通过 SQL Server Management Studio 连接到数据库吗?

尝试

  1. 禁用防火墙
  2. 使用 IP 地址
  3. 显式使用 sql server 实例名称。
于 2012-06-19T17:49:28.290 回答
0

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

于 2012-06-19T19:33:17.447 回答