在VS2005中,我使用的是访问SQL Server的DLL。 DLL返回SQLException
无效的对象名称'tableXYZ'
但tableXYZ是数据库中的一个表。
它应该寻找dbo.tableXYZ吗?这是使用登录的权限问题吗?
答案 0 :(得分:1)
使用dbo.tableXYZ
可以更清楚地显示您想要的内容 - 默认tableXYZ
架构中的dbo
。另一个模式中也可能有tableXYZ
- 然后SQL Server可能不知道您想要哪个。
它绝对可能是权限问题。如果您在SQL SErver Mgmt Studio中以该用户身份连接到该数据库 - 您是否可以看到tableXYZ
表??
UPDATE: DLL是否需要特定的连接字符串,您可能没有将其复制到调用应用程序的app.config文件中? .NET中的DLL实际上没有自己的mylibrary.dll.config - 默认情况下它不会被.NET读取。
答案 1 :(得分:1)
这可能是表和权限所有者的问题。
例如,表所有者可能是dbo
,因此完整的表名称为dbo.TableXYZ
您连接的用户可能是SQLUser
可能无法访问{{} 1}}架构。因此,只能访问dbo
我会检查您用来连接数据库的权限。
答案 2 :(得分:0)
你必须在你的连接字符串中使用databasename - 否则它只是连接你必须使用dbo.databasename.tableXYZ。
您可以找到各种连接字符串here
答案 3 :(得分:0)
作为起点,您可以打开SQL Server Profiler跟踪,以查看 DLL如何连接到数据库。例如您应该能够看到正在使用的凭据。您还可以确认代码是否连接到正确的数据库等。