¿No se respeta el esquema predeterminado de SQL Server 2008?

9

Acabamos de copiar una base de datos SQL 2008 en otro servidor, con fines de prueba. El usuario típico que inicia sesión utiliza algunos objetos en un determinado esquema. Digamos que es usuario fooy esquema bar.

fooEl esquema predeterminado es bartanto a nivel de instancia como de base de datos. Sin embargo, cuando fooinicia sesión, no puede encontrar ningún objeto en el baresquema sin utilizar un nombre completo.

¿Por qué el esquema predeterminado no funcionaría aquí?

John Cromartie
fuente

Respuestas:

13

¿Tiene derechos de administrador de usuario foo en SQL Server? Porque si lo hace, cualquier usuario de sysadmin tendrá por defecto un esquema dbo asignado , independientemente de lo que esté configurado en las propiedades del Usuario para una base de datos específica.

Por lo tanto, para tener un esquema predeterminado, un usuario debe tener roles de base de datos como db_owner, db_datawriter, etc., en lugar del rol de servidor sysadmin.

Dime si no es tu caso.

yrushka
fuente
1
¡Eres un dios y me inclino ante tu conocimiento, me quedé perplejo hasta que me topé con esto!
Jens
1

Otro escenario en el que puede ocurrir este problema (SQL 2008 R2) ...

Tenía un usuario vinculado a un inicio de sesión de autenticación de SQL, que estaba tratando de asociar con un esquema existente. El inicio de sesión no tenía derechos de administrador de sistemas , por lo que la solución anterior no ayudó.

Eventualmente descubrí que la base de datos todavía estaba configurada en modo de compatibilidad SQL 2000. El cambio a SQL 2005 resolvió el problema.

Desilusionado
fuente
Curiosamente, parece estar teniendo este problema (usuario vinculado a un inicio de sesión de autenticación SQL, que estaba tratando de asociar con un esquema existente), excepto que mi nivel de compatibilidad es 'SQL Server 2016 (130)'
tbone
0

Asumirá que el esquema predeterminado en el nuevo servidor es dbo; Si el esquema no se ha copiado con la base de datos.

No es la solución, pero tal vez esto pueda ayudar, echando un vistazo al artículo de msdn. http://msdn.microsoft.com/en-us/library/dd283095.aspx

Nick O'Neil
fuente
Hemos configurado el esquema predeterminado para fooel nuevo servidor. Se establece bartanto en el usuario de instancia como en el nivel de usuario de la base de datos.
John Cromartie