我正在做一个相当大的项目,这是由人谁是现在离开公司,开始有些维修编程...“无效的对象名称:dbo.etc”错误的根本原因?
我刚才备份的公司数据库之一,然后将其重新连接到我们的测试服务器。这很多似乎工作正常。
然后我通过程序的通常登录程序,该部分也似乎工作。
但是,一旦我到达需要执行存储过程的程序中的一个点,我会收到一个错误,告诉我Invalid object name 'Informix.dbo.customer'
。
在原始数据库上运行相同的函数可以正常工作,并返回我期望看到的数据。
对类似错误的解释我发现似乎指的是Schema,但这就是事情变得有点奇怪的地方。原始数据库没有明显有任何Schema;在它的“安全”文件夹中,它只有一个包含dbo的“用户”文件夹和一个包含“数据库角色”文件夹的“角色”文件夹,以及通常的db_owner等等东西,以及一个名为“应用程序角色”。
已备份和恢复的数据库上的Security文件夹充满了各种废话。除了dbo之外,还有三个用户,一个“Schemas”文件夹,“Certificates”文件夹,两个加密密钥文件夹......我无法删除其中的任何一个。
从我对SQL登录系统的理解有限,我登录的用户正在从这个随机垃圾集合中获得非dbo权限,因此被拒绝访问数据库所拥有的部分数据库DBO。
为了我自己的理解,抛出这些Invalid object name
错误的问题的核心是什么?而对于实际问题,我能做些什么来纠正这种情况,实际上我正在使用的测试数据库工作方式与其在活动测试数据库中的工作方式相同?
恢复的数据库是否与生产数据库具有相同的名称?数据库名称是否可能硬编码到应用程序中? – 2010-10-19 12:11:34
对不起,意思是说明这一点然后忘记了。我已经使用执行存储过程函数从SQL Server Management Studio中测试了存储过程,存储过程在原始数据库上运行,而不是在新数据库上运行。数据库名称是相同的,但。 – Frosty840 2010-10-19 12:15:23