【问题标题】:SQL SERVER ODBC ERROR(Invalid object name) but when I add in SQL query mydb.dbo.mytable all works fineSQL SERVER ODBC ERROR(Invalid object name) 但是当我添加 SQL 查询 mydb.dbo.mytable 时一切正常
【发布时间】:2011-11-22 04:07:18
【问题描述】:

我有一个旧的 asp.net 1 项目(它在旧服务器上运行良好,mytable 存在于 db 中。现在我正在尝试将其升级到 asp.net 4

我的连接字符串是:

<add key="SqlConnection" 
     value="DRIVER={SQL Server};SERVER=bel\SQLEXPRESS;Trusted_connection=yes;DAT­ABASE=mydb;option=3;"/>

我得到错误

错误 [42S02] [Microsoft][ODBC SQL Server 驱动程序][SQL 服务器]无效的对象名称“mytable”。

OdbcCommand dataCommand = new OdbcCommand("select * from mytable", 数据连接);
dataCommand.CommandTimeout = 900;
OdbcDataReader 数据读取器 = dataCommand.ExecuteReader(CommandBehavior.CloseConnection);

当我将 SQL 写为 select * from mydb.dbo.mytable 时,一切正常

我应该在数据库设置(安全、架构、dbo)或连接字符串中进行哪些更改?

【问题讨论】:

  • 始终指定架构 - 例如使用dbo.MyTable 而不仅仅是MyTable - 所以试试select * from dbo.mytable - 有用吗?

标签: sql-server schema odbc connection-string


【解决方案1】:

看到您使用的是 ODBC,我的猜测是您的 ODBC 连接没有指定默认数据库,因此它使用的是主数据库。

您可以:

  • 使用“Database=myDBname”或“InitialCatalog=myDBname”在连接字符串中指定数据库
  • 更改 ODBC 连接中的默认数据库,如此处所示 XP/Server 2003

【讨论】:

  • 另一件值得尝试的事情是切换黑白 DatabaseInitialCatalog。我能够使用 InitialCatalog 连接到 Azure Synapse,但在将参数切换为 Database 之前无法实际查询。
猜你喜欢
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多