我们只是将SQL 2008数据库复制到另一台服务器上进行testing。 典型的login用户使用某个模式中的某些对象。 假设它是用户foo和模式bar 。
foo的默认模式在实例和数据库级别都是bar 。 但是,如果foologin,则无法使用完全限定的名称在bar模式中找不到任何对象。
为什么默认模式不能在这里工作?
在SQL Server上具有foo用户系统pipe理员权限? 因为如果这样做,那么任何系统pipe理员用户都将默认分配模式dbo ,而不pipe用户特性中为特定数据库设置的内容。
所以,为了有一个默认模式,用户需要具有数据库angular色,如db_owner,db_datawriter等,而不是服务器angular色sysadmin。
告诉我,如果不是你的情况。
另一个可能发生此问题的情况(SQL 2008 R2)…
我有一个用户链接到一个SQL身份validationlogin,我试图关联一个现有的架构。 login没有系统pipe理员权限,所以上面的解决scheme没有帮助。
我最终发现数据库仍然在SQL 2000兼容模式下configuration。 更改为SQL 2005解决了这个问题。
它会假定新服务器上的默认模式是dbo; 如果架构尚未与数据库一起复制。
不是解决scheme,但也许这可能有帮助,看看msdn文章。 http://msdn.microsoft.com/en-us/library/dd283095.aspx