恢复SQL Server 2008数据库后“无效的对象名称”
问题描述:
我正在切换我的Web主机并备份了我的数据库。由于我的新主机受到一些限制,我无法恢复.bak文件并必须发送给他们,以便他们恢复它。一旦他们恢复了它,我跑我的应用程序获取此恢复SQL Server 2008数据库后“无效的对象名称”
System.Data.SqlClient.SqlException: Invalid object name "<table name>"
每当我试图从应用程序查询表。但是,通过使用相同用户名和密码的管理工作室登录并查询表格,我没有任何问题。
我运行一个MVC 3网站与SQL Server 2008
有谁知道为什么试图运行我的应用程序时,我可能会得到这些例外?
编辑:
一些详细信息:
我是用我的旧数据库的用户名是Kimpo54321所以我创造了前缀得到这样Kimpo54321所有表。所以我尝试将它添加到我的Web应用程序中的第一个查询中,所以它将是SELECT * FROM Kimpo54321.<tablename>
,并且查询通过而没有异常。
现在我不必在每个表名前面加上前缀在我的应用程序中,我不想将它应用于我的所有查询。有没有办法来解决这个问题?
编辑:
我跑这让为每个表ALTER架构线,改变了一切dbo
及其最后的工作。日Thnx阿龙指着我在正确的方向找到了答案,
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')
答
您是否参考模式(例如dbo.table与表)?新主机上的用户有可能与您的旧主机有不同的默认模式。你如何“查询表” - 右键单击并选择其中一个选项,或使用应用程序发出的完全相同的查询?
答
这可能是Web应用程序的用户需要重新添加到还原的数据库的问题。某些用户在将数据库恢复到其他SQL Server时不保留其权限。
啊,是的,编辑我的问题,而你的答案发布。这一切都开始有意义了,现在我刚刚右键单击管理工作室选择top 1000中的表格,实际上它将表格名称与旧架构(kimpo54321)作为前缀。我尝试单击管理工作室菜单树中的登录文件夹,然后单击试图在用户映射中添加kimpo54321模式。我收到一条错误消息“无法更改用户dbo”,当我尝试添加两个模式时,什么都没有发生,默认模式仍然是dbo。这如何改变? – Kimpo