Le schéma par défaut de SQL Server 2008 n'est pas respecté?


9

Nous venons de copier une base de données SQL 2008 sur un autre serveur, à des fins de test. L'utilisateur typique qui se connecte utilise certains objets dans un certain schéma. Disons que c'est l'utilisateur fooet le schéma bar.

fooLe schéma par défaut est barau niveau de l'instance et de la base de données. Cependant, lorsque vous vous fooconnectez, il ne trouve aucun objet dans le barschéma sans utiliser un nom complet.

Pourquoi le schéma par défaut ne fonctionnerait-il pas ici?

Réponses:


13

L'utilisateur foo dispose-t-il des droits d' administrateur système sur SQL Server? Parce que si c'est le cas, tout utilisateur sysadmin se verra attribuer par défaut le schéma dbo , indépendamment de ce qui est défini dans les propriétés de l'utilisateur pour une base de données spécifique.

Ainsi, afin d'avoir un schéma par défaut, un utilisateur doit avoir des rôles de base de données comme db_owner, db_datawriter et ainsi de suite, au lieu du rôle serveur sysadmin.

Dites-moi si ce n'est pas votre cas.


1
Vous êtes un dieu et je m'incline à votre connaissance, j'étais perplexe jusqu'à ce que je tombe sur ça!
Jens

1

Un autre scénario dans lequel ce problème peut se produire (SQL 2008 R2) ...

J'avais un utilisateur lié à une connexion d'authentification SQL, que j'essayais d'associer à un schéma existant. La connexion n'avait pas de droits d' administrateur système , donc la solution ci-dessus n'a pas aidé.

J'ai finalement compris que la base de données était toujours configurée en mode de compatibilité SQL 2000. Le passage à SQL 2005 a résolu le problème.


Étrangement, je semble avoir ce problème (utilisateur lié à une connexion d'authentification SQL, que j'essayais d'associer à un schéma existant), sauf que mon niveau de compatibilité est «SQL Server 2016 (130)»
tbone

0

Il supposera que le schéma par défaut sur le nouveau serveur est dbo; Si le schéma n'a pas été copié avec la base de données.

Pas la solution, mais cela pourrait peut-être aider, jetez un œil à l'article msdn. http://msdn.microsoft.com/en-us/library/dd283095.aspx


Nous avons configuré le schéma par défaut pour foosur le nouveau serveur. Il est défini comme barau niveau de l'utilisateur d'instance et au niveau de l'utilisateur de la base de données.
John Cromartie du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.