SQL Server 2005:无效的对象名称异常

SQL Server 2005:无效的对象名称异常,sql,sql-server-2005,ado.net,Sql,Sql Server 2005,Ado.net,在VS2005中,我使用的是访问SQL Server的DLL。DLL返回一个SQLException 无效的对象名称“tableXYZ” 但是tableXYZ是数据库中的一个表 它应该寻找dbo.tableXYZ吗?使用的登录名是否存在权限问题?您必须在连接字符串中使用databasename-否则它将只是连接,您必须使用dbo.databasename.tableXYZ 使用dbo可以找到各种连接字符串。tableXYZ可以更清楚地显示您想要的内容-默认dbo模式中的tableXYZ。在另一个

在VS2005中,我使用的是访问SQL Server的DLL。DLL返回一个SQLException

无效的对象名称“tableXYZ”

但是tableXYZ是数据库中的一个表


它应该寻找dbo.tableXYZ吗?使用的登录名是否存在权限问题?

您必须在连接字符串中使用databasename-否则它将只是连接,您必须使用dbo.databasename.tableXYZ


使用
dbo可以找到各种连接字符串。tableXYZ
可以更清楚地显示您想要的内容-默认
dbo
模式中的
tableXYZ
。在另一个模式中也可能有一个
tableXYZ
,那么SQL Server可能不知道您想要哪个

这很可能是一个权限问题。如果您以该用户的身份连接到SQL SErver Mgmt Studio中的该数据库,您是否可以看到
tableXYZ
table


更新:DLL是否需要特定的连接字符串,而您可能没有将其复制到调用应用程序的app.config文件中??.NET中的DLL不能真正拥有自己的mylibrary.DLL.config-默认情况下,.NET不会读取它。

这可能是表格所有者和权限的问题

例如,表所有者可能是
dbo
,因此完整表名将是
dbo。TableXYZ
您连接的用户可能是,例如
SQLUser
可能无法访问
dbo
架构。因此只能访问
SQLuser.TableXYZ


我将检查您用于连接数据库的权限。

作为起点,您可以打开SQL Server探查器跟踪,以查看DLL如何连接到数据库。e、 g.您应该能够看到正在使用的凭据。您还可以确认代码是否连接到正确的数据库等。

是的,我可以。我应该注意,我没有DLL的源代码,所以我所能做的就是更改SQL Server上的设置。回复“更新”:不,似乎没有任何.config文件。我是否可以推断连接正在成功建立,并且问题是架构/权限之一?我应该注意,我没有DLL的源代码。我所能做的就是更改调用代码和SQL Server。我无法更改连接到数据库的代码,因为它位于已编译的DLL中。您不需要更改DLL-您需要检查连接到数据库的用户是否有权访问表所属的架构。我无法更改连接到数据库的代码,因为它在一个复杂的DLL中。