SQL Server 2008 默认模式不被尊重?

SQL Server 2008 默认模式不被尊重?

我们刚刚将 SQL 2008 数据库复制到另一台服务器,用于测试目的。登录的典型用户使用特定架构中的某些对象。我们假设它是用户foo和架构bar

foo的默认架构bar同时处于实例和数据库级别。但是,foo登录时bar,如果不使用完全限定名称,则无法在架构中找到任何对象。

为什么默认模式在这里不起作用?

答案1

有 foo 用户系统管理员SQL Server 上的权限?因为如果确实如此,则任何 sysadmin 用户都将默认分配有架构德博,与特定数据库的用户属性中的设置无关。

因此,为了拥有默认模式,用户需要拥有数据库角色,如 db_owner、db_datawriter 等,而不是服务器角色 sysadmin。

如果这不是你的情况请告诉我。

答案2

可能出现此问题的另一种情况(SQL 2008 R2)...

我有一个链接到 SQL 身份验证登录的用户,我试图将其与现有架构关联。登录名没有系统管理员权利,所以上述解决方案没有帮助。

我最终发现数据库仍然配置为 SQL 2000 兼容模式。更改为 SQL 2005 解决了该问题。

答案3

它将假定新服务器上的默认模式是 dbo;如果模式尚未随数据库一起复制。

这不是解决方案,但也许这可能会有所帮助,看看 msdn 文章。http://msdn.microsoft.com/en-us/library/dd283095.aspx

相关内容