【发布时间】:2013-02-04 19:39:01
【问题描述】:
我们正在将数据库从 SQL Server 2000 迁移到 SQL Server 2008 R2,但我们的架构遇到了问题。在 SQL Server 2000 中,如果您没有在对象名称前加上所有者/模式(例如 SELECT * FROM blah 而不是 dbo.blah),SQL Server 仍然可以解决。即使您的对象在非 dbo 所有者中,这也有效。
在 SQL Server 2005 中,这已按此处所述进行了更改:http://blogs.msdn.com/b/mssqlisv/archive/2007/03/23/upgrading-to-sql-server-2005-and-default-schema-setting.aspx。
我可以通过设置用户的默认模式 xyz 而不是 dbo 来绕过具有 2 个模式的数据库。我遇到的问题是在有第三个模式(abc.blah)的数据库中。当我将用户设置为默认 xyz 时,他们可以顺利进入 dbo,但在尝试从 abc 中选择不带架构前缀的内容时会出现 Invalid Object 错误(abc.blah 工作正常)。
当然,一开始就不应该这样编码,但那是一场不同的战斗。我已经验证权限不是问题。
我相信其他人也遇到过这种情况。除了修复代码,有没有人找到解决方法?
【问题讨论】: