2

我正在切换我的网络主机并备份我的数据库。由于我的新主机的一些限制,我无法恢复 .bak 文件,不得不发送给他们以便他们恢复它。一旦他们恢复它,我运行我的应用程序我得到了这个

System.Data.SqlClient.SqlException: Invalid object name "<table name>"

每当我尝试从应用程序查询表时。但是,我通过管理工作室使用相同的用户名和密码登录并查询表没有问题。

我正在使用 SQL Server 2008 运行 mvc 3 站点

有谁知道为什么我在尝试运行我的应用程序时可能会遇到这些异常?

编辑:

更多信息:

我在旧数据库中使用的用户名是 Kimpo54321,所以我创建的所有表都有这样的前缀 Kimpo54321。所以我尝试将它添加到我的网络应用程序中的第一个查询中,这样SELECT * FROM Kimpo54321.<tablename>查询就会毫无例外地通过。

现在我不必在我的应用程序中为每个表名添加前缀,我不想将它应用于我的所有查询。有没有办法来解决这个问题?

编辑:

我运行它以获得每个表的更改模式行并将所有内容更改为dbo并最终正常工作。谢谢亚伦为我指出正确的方向找到答案

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
    FROM sys.Objects o 
    INNER JOIN sys.Schemas s on o.schema_id = s.schema_id 
    WHERE s.Name = 'yourschema'
    And (o.Type = 'U' Or o.Type = 'P' Or o.Type = 'V')
4

2 回答 2

5

Are you referencing the schema (e.g. dbo.table vs. table)? It is possible that your user at the new host has a different default schema than at your old host. How are you "querying the tables" - right-clicking and selecting one of the options, or using the exact same query issued by the application?

于 2011-07-15T18:34:32.487 回答
0

这可能是需要将 Web 应用的用户重新添加到恢复的数据库的问题。当数据库恢复到不同的 sql 服务器时,某些用户不维护他们的权限。

于 2011-07-15T18:25:40.500 回答