web-dev-qa-db-fra.com

Autorisations SQL Server 2008 R2 Express - impossible de créer une base de données ou de modifier des utilisateurs

Récemment mis à niveau vers SQL Server 2008 R2 Express. Lorsque j'essaie de créer une base de données après m'être connecté à l'aide de l'authentification Windows avec mon identifiant myuser, je reçois cette erreur:

Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Autorisation CREATE DATABASE refusée dans la base de données 'master'. RESTORE HEADERONLY se termine anormalement Erreur 262

Si j'essaie d'ajouter le rôle sysadmin à mon utilisateur, voici l'erreur que je reçois:

Échec de l'ajout d'un membre pour ServerRole 'sysadmin'. (Microsoft.SqlServer.Smo)
Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
L'utilisateur n'est pas autorisé à effectuer cette action Erreur 15247

Si j'essaie d'ajouter ce rôle à mon utilisateur avec T-SQL, à l'aide de cette commande,

EXEC sp_addsrvrolemember 'ziffenergy\myuser', 'sysadmin';
GO

Voici l'erreur que je reçois:

Msg 15247, niveau 16, état 1, procédure sp_addsrvrolemember, ligne 29
L'utilisateur n'est pas autorisé à effectuer cette action.

Est-ce que quelqu'un a des suggestions? Il semble que je ne puisse rien faire avec la base de données sur la machine locale. Veuillez noter que je suis l'administrateur du poste de travail Windows 7 que j'utilise et que si j'essaie de créer ou de modifier des bases de données et/ou des utilisateurs sur notre serveur de base de données IT Test Network à l'aide de SQL Server Management Studio, je peux le faire sans problème.

16
user8128167

Vous pouvez être administrateur sur le poste de travail, mais cela ne signifie rien pour SQL Server. Votre identifiant doit être membre du rôle sysadmin pour effectuer les actions en question. Par défaut, le groupe d'administrateurs locaux n'est plus ajouté au rôle sysadmin dans SQL 2008 R2. Vous devrez vous connecter avec autre chose (sa par exemple) afin de vous accorder les autorisations.

14
squillman

Venir tard à la fête, mais j'ai trouvé cela guide étape par étape fantastique sur la prise de contrôle de votre instance SQLExpress si vous n'avez pas votre mot de passe sa. J'ai utilisé ce processus non seulement pour réinitialiser mon mot de passe sa, mais j'ai également ajouté mon compte de domaine à tous les rôles de serveur disponibles. Je peux maintenant créer des bases de données, modifier les connexions, effectuer des opérations en masse, des sauvegardes/restaurations, etc. en utilisant ma connexion normale.

Pour résumer, vous utilisez SQL Server Configuration Manager pour mettre votre instance en mode mono-utilisateur. Cela vous élève à sysadmin lorsque vous vous connectez, vous permettant de tout configurer.

Edit: j'ai copié les étapes ci-dessous - bravo à l'auteur d'origine du lien ci-dessus.

  1. Connectez-vous à l'ordinateur en tant qu'administrateur (ou tout utilisateur disposant de privilèges d'administrateur)
  2. Ouvrez "SQL Server Configuration Manager"
  3. Cliquez sur "SQL Server Services" dans le volet gauche
  4. Arrêtez l'instance "SQL Server" et "SQL Server Agent" dans le volet droit si elle est en cours d'exécution
  5. Exécutez SQL Express en mode mono-utilisateur en cliquant avec le bouton droit sur l'instance "SQL Server" -> Propriétés (dans le volet droit de SQL Server Configuration Manager).
  6. Cliquez sur l'onglet Avancé et recherchez "Paramètres de démarrage". Modifiez les "Paramètres de démarrage" afin que la nouvelle valeur soit -m; (sans l'exemple <>): de: -dc:\Program Files\Microsoft SQL ............. (jusqu'à la fin de la chaîne) à: -m; -dc:\Program Files\Microsoft SQL ............. (jusqu'à la fin de la chaîne)
  7. Démarrez SQL Server
  8. Ouvrez votre MS SQL Server Management Studio et connectez-vous au serveur SQL avec "Authentification Windows" comme mode d'authentification. Étant donné que SQL Server fonctionne en mode mono-utilisateur et que vous êtes connecté à l'ordinateur avec des privilèges d'administrateur, vous aurez un accès "administrateur système" à la base de données.
  9. Développez le nœud "Sécurité" sur MS SQL Server Management Studio dans le volet gauche
  10. Développez le nœud "Logins"
  11. Double-cliquez sur la connexion 'sa'
  12. Modifiez le mot de passe en entrant un mot de passe complexe si "Appliquer la politique de mot de passe" est coché, sinon, entrez simplement un mot de passe.
  13. Assurez-vous que le compte "sa" est "activé" en cliquant sur État dans le volet gauche. Réglez le boîtier radio sous "Connexion" sur "Activé"
  14. Cliquez sur OK"
  15. De retour dans la fenêtre principale de MS SQL Server Management Studio, vérifiez si l'authentification SQL Server est utilisée en cliquant avec le bouton droit sur le nœud le plus haut dans le volet gauche (généralement ".\SQLEXPRESS (SQL Server)") et en choisissant les propriétés.
  16. Cliquez sur "Sécurité" dans le volet gauche et assurez-vous que "SQL Server et le mode d'authentification Windows" est celui sélectionné sous "Authentification du serveur"
  17. Cliquez sur OK"
  18. Se déconnecter de MS SQL Server Management Studio
  19. Ouvrez à nouveau "Sql Server Configuration Manager" et arrêtez l'instance SQL Server.
  20. Faites un clic droit sur l'instance SQL Server et cliquez sur l'onglet "Avancé". Recherchez à nouveau "Paramètres de démarrage" et supprimez le "-m;" que vous avez ajouté plus tôt.
  21. Cliquez sur "OK" et redémarrez l'instance SQL Server
  22. Vous devriez maintenant pouvoir vous connecter en tant que "sa" en utilisant le nouveau mot de passe que vous avez défini à l'étape 12.
39
killthrush

Dans SSMS 2012, vous devrez utiliser:

Pour activer le mode mono-utilisateur, dans les propriétés d'instance SQL, NE PAS aller à la balise "Advance", il existe déjà une balise "Startup Parameters".

  1. Ajoutez "-m;" en paramètres;
  2. Redémarrez le service et ouvrez une session sur cette instance SQL à l'aide de l'authentification Windows;
  3. Les étapes de repos sont les mêmes que ci-dessus. Modifiez l'autorisation de votre compte d'utilisateur Windows en toute sécurité ou réinitialisez SA mot de passe du compte.
  4. Enfin, supprimez le paramètre "-m" des "paramètres de démarrage";
2
Yang

J'ai suivi les étapes de la réponse de killthrush et à ma grande surprise, cela n'a pas fonctionné. En me connectant en tant que sa, je pouvais voir mon utilisateur de domaine Windows et en avais fait un administrateur système, mais lorsque j'ai essayé de me connecter avec l'authentification Windows, je ne pouvais pas voir ma connexion sous les connexions, je ne pouvais pas créer de bases de données, etc. Ensuite, cela m'a frappé. Cette connexion était probablement liée à un autre compte de domaine avec le même nom (avec une sorte d'ID interne/caché qui n'était pas correct). J'avais quitté cette organisation il y a quelque temps, puis je suis revenu des mois plus tard . Au lieu de réactiver mon ancien compte (qu'ils auraient pu supprimer), ils ont créé un nouveau compte avec le même domaine\nom d'utilisateur et un nouvel ID interne. En utilisant sa, j'ai supprimé mon ancienne connexion, l'ai à nouveau ajoutée avec le même nom et ajouté sysadmin. Je me suis reconnecté avec Windows Auth et tout semble comme il se doit. Je peux maintenant voir mes connexions (et d'autres) et faire tout ce que je dois faire en tant qu'administrateur système en utilisant ma connexion d'authentification Windows.

1
Vitoc

J'ai 2 comptes sur ma machine Windows et je rencontrais ce problème avec l'un d'eux. Je ne voulais pas utiliser le compte sa, je voulais utiliser la connexion Windows. Il n'était pas immédiatement évident pour moi que je devais simplement me connecter à l'autre compte que j'avais utilisé pour installer SQL Server et ajouter les autorisations pour le nouveau compte à partir de là

(SSMS > Security > Logins > Add a login there)

Un moyen facile d'obtenir le nom de domaine complet dont vous avez besoin pour y ajouter un écho cmd ouvert.

echo %userdomain%\%username%

Ajoutez un identifiant pour cet utilisateur et donnez-lui toutes les autorisations pour la base de données master et les autres bases de données que vous souhaitez. Quand je dis "toutes les autorisations", assurez-vous de ne vérifier aucune des autorisations "refuser" car cela fera le contraire.

0
parliament