正在忽略连接字符串中的下划线之后的数据库名称

时间:2012-06-19 14:55:41

标签: c# .net sql

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

代码例:

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数据库名称吗?我无法简单地更改数据库名称,因为我无法访问此数据库,并且我被告知不会更改数据库名称。

3 个答案:

答案 0 :(得分:1)

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

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

"

答案 1 :(得分:0)

您是否可以通过SQL Server管理工作室连接到数据库?

尝试

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

答案 2 :(得分:0)

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