4

我们正在创建我们网站的新版本。因此,我复制了当前数据库并将其重命名为新名称。当我尝试加载新站点时,出现以下错误

[Macromedia][SQLServer JDBC Driver][SQLServer]Invalid object name 'name1.dbo.table'.

CFAdmin 中的数据源指向新的数据库,站点的源代码正在使用新的数据源。无论如何,我已经删除了指向旧数据库的数据源。

CF Data Source Name: name2
Database:            name2

我在站点的源代码中找不到任何引用任何数据库的内容,所有查询都是通过存储过程执行的。(现在所有这些都指向 name2 而不是 name1) 这是 ColdFusion 的全新安装,因此 CFAdmin 中不能有任何东西以某种方式指向旧数据库而不是新数据库。除此之外,我不知道是什么导致了这个问题。任何想法表示赞赏。

4

1 回答 1

4

如果您确信 ColdFusion 正在查看正确的数据库,那么下一个要检查的地方是存储过程,该存储过程具有明确提及旧名称的三部分引用。这可能会出现误报,具体取决于 name1 的真正含义,但这是一个开始:

SELECT p.name, m.definition
  FROM sys.procedures AS p
  INNER JOIN sys.sql_modules AS m
  ON p.[object_id] = m.[object_id]
  WHERE m.definition LIKE N'%name1%';
-- put old name here --------^^^^^

它也可能是一个函数或触发器或其他一些模块,因此扩展搜索可能是明智的:

SELECT o.name, o.type_desc, m.definition
  FROM sys.objects AS o
  INNER JOIN sys.sql_modules AS m
  ON o.[object_id] = m.[object_id]
  WHERE m.definition LIKE N'%name1%';
-- put old name here --------^^^^^

您可能还希望将搜索范围扩大到实例上的其他数据库,您知道,以防万一。:-)

于 2013-11-12T19:35:09.047 回答