2012-03-05 111 views
1

在发布此问题之前,我确实花了一个小时搜索。找不到对象,因为它不存在

该表确实存在,我可以查询该表,我可以看到的结果集,但是当我尝试从Visual Studio 2008中执行我得到下面的错误:

Cannot find the object "Products" because it does not exist or you do not have permissions 

为什么会出现这种错误发生什么我应该怎样解决它?

using (System.Data.SqlClient.SqlCommand cmd = connection.CreateCommand() as System.Data.SqlClient.SqlCommand) 
{ 
    cmd.CommandText = "SET IDENTITY_INSERT Products ON"; 
    cmd.CommandType = CommandType.Text; 
    cmd.ExecuteNonQuery(); 
} 

我试图指定dbo.Products和执行之前我也试过use dbname但是这并没有帮助。

+0

你是表的所有者还是你有'ALTER'权限的表?这些权限是在表上执行“SET IDENTITY_INSERT”的先决条件。 – 2012-03-05 02:38:23

+0

ConnectionString是否指定了正确的数据库? – 2012-03-05 02:41:58

+0

@Pat:是它指向正确的数据库,正如我所说如果我连接到一个不同的表,它的工作原理没有任何问题 – 2012-03-05 02:45:40

回答

1

花了几个小时后,我发现问题是在连接字符串(但这仍然没有传达我),并且正如我所说的问题我没有任何问题,但突然其弹出和我没有改变任何东西(谁知道什么DBA已经改变)

所以我尝试调整我的连接字符串,而它确实使字符串 ,看看它是否有所作为:它的确如此。

c.Provider = 'sqloledb' 
dsn = 'Server=MyServer;Database=MyDB;Trusted_Connection= Yes' 
c.Open(dsn) 

我已经加入到我的连接字符串的唯一的事情是Trusted_Connection= Yes

PS:你把它关掉SET IDENTITY_INSERT仍然为您的会议,直到 ,它只能是在一个表时间

希望这会帮助其他人...

0

由于尚未设置数据库上下文,因此发生错误。如果你添加“使用(dbname)去”(与你的数据库名称)的查询开始它将工作。

对不起没有发现,你试过。也许你连接到错误的服务器?尝试将代码中的查询更改为“create table argh(argh int)”,并在第二次检查失败。然后追踪它创建它的地方!

+0

OP明确表示,已经尝试过。 – 2012-03-05 02:37:46

+0

接近问题的结尾是“我也尝试过'使用dbname'”。 – 2012-03-05 02:38:57

+0

什么是OP - 作者?我还是这个缩写的新名字 – 2012-03-05 02:48:04

相关问题