2009-04-18 11 views
5

J'utilise SQL Management Studio 2008 Express en tant qu'interface graphique pour mon instance SQL Server 2008 Express locale, que je n'ai localement que comme interface de test et de développement pour mes projets Web.Comment obtenir des "droits d'administrateur" dans SQL Server Management Studio?

Je suis récemment devenu plus confiant dans le codage SQL, et j'ai commencé à utiliser des composants SQL plus compliqués - mon dernier domaine d'exploration étant les triggers. Cependant, à ma grande surprise, je ne semble pas avoir de droits d'administrateur sur mon instance de serveur, ce qui signifie que je ne peux pas faire des choses simples comme le débogage ou la modification des droits d'accès. Lorsque j'essaie de démarrer le débogage, j'obtiens un message d'autorisation refusée, et je l'ai également vu lorsque j'essaie de gérer les règles d'autorisation pour différentes bases de données. Je soupçonne que cela a quelque chose à voir avec certaines options que j'ai choisies lors de l'installation du serveur, mais comme j'ai déjà plusieurs bases de données configurées et remplies de données, je n'ai aucune envie de désinstaller et de réinstaller le tout.

Existe-t-il un moyen de changer quel compte d'utilisateur est l'administrateur principal de l'instance de serveur? Sinon, existe-t-il un autre moyen d'obtenir des droits d'accès, par exemple pour déboguer mes déclencheurs?

Répondre

5

Par défaut, cela devrait être un rôle sysadmin dans MSSQL. À l'aide de SSMS, connectez-vous à votre instance MSSQL à l'aide de l'authentification intégrée. Vous êtes maintenant un administrateur système. En tant que sysadmin, vous pouvez maintenant add your normal user account to the sysadmin role:

EXEC sp_addsrvrolemember @loginame = 'PC_OR_DOMAIN\loginname', @rolename = 'sysadmin' 

Si vous utilisez SSPI (aka l'authentification intégrée, alias pas un autre nom d'utilisateur et mot de passe lorsque vous démarrez SSMS), puis il suffit d'utiliser votre connexion Windows comme loginame. Si vous utilisez l'authentification Sql Server (aka, un nom d'utilisateur et un mot de passe), utilisez le nom d'utilisateur comme nom de connexion. Si vous utilisez un autre nom de connexion, un compte sera également créé.

Il ya certainement un moyen de le faire dans l'interface graphique - mais je ne l'ai pas pratique ATM pour vous dire comment. Je pense que c'est sous Sécurité -> Connexions -> Propriétés et quelques cases à cocher pour les différents rôles de serveur.

Edit: Enabling the local admin account on Vista Aussi, si vous êtes un administrateur local (votre compte utilisateur est répertorié sous groupe Administrateurs local) puis - by default - vous êtes un administrateur système. Cela peut valoir la peine de vérifier les membres du rôle sysadmin (SQL) et le groupe Administrateurs locaux (Vista).

Édition2: s'avère, SQL 2008 does not add BUILTIN\Administators plus.Dans ce cas, vous devez vérifier ce que a ajouté. Cela devrait être disponible via le noeud Logins. Il y a une note que vous pouvez être locked out de MSSQL Admin si vous ne choisissez pas un login sysadmin. Si c'est le cas, je le réinstallerais. Vous pouvez enregistrer vos bases de données en arrêtant MSSQL et en copiant les fichiers * .MDF et * .LDF. Après la réinstallation, copiez-les et utilisez sp_attach_db pour les rattacher.

+0

Comment me connecter en tant qu'administrateur local? Je cours Windows Vista, et le seul compte que je connaisse est mon compte d'utilisateur habituel (AASLOEG \ Tomas, car le nom de mon ordinateur est AASLOEG ...). J'ai le droit d'exécuter des choses en tant qu'administrateur, mais l'exécution de SSMS en tant qu'administrateur ne fait pas l'affaire. J'ai essayé de faire ce que cette instruction SQL devrait faire à travers l'interface graphique, mais on me refuse la permission jusqu'ici ... –

+0

Merci pour les liens dans vos modifications - bien qu'ils n'aient pas résolu mon problème, j'ai appris d'autres choses utiles . J'ai terminé upp en déplaçant les fichiers db du répertoire mssql, en les réinstallant et en m'assurant que le groupe admin local et mon propre compte utilisateur étaient ajoutés au rôle sysadmin. C'était un brouillard, mais ça marche maintenant. Merci! –

+0

FYI, cela a résolu mon problème. –

0

Sql Gestionnaire de configuration du serveur.

Cela vous permettra de définir le compte d'instance.

Toutefois, ce que je pense que vous pourriez être après est de changer le propriétaire de la base de données à l'utilisateur avec lequel vous vous connectez à la base de données. SI vous utilisez SSPI, ce sera votre utilisateur connecté, ou si vous utilisez l'authentification SQL, ce sera l'utilisateur qui se connectera à votre chaîne de connexion.

supplémentaires:

Si vous déboguez sous Windows XP ou au-dessus, et vous n'êtes pas l'administrateur (local), alors vous aurez besoin d'être placé dans le groupe « Débogage utilisateurs » sur ce système. Sinon accéder à la mémoire ou attacher un débogueur à un processus que vous ne possédez pas est un gros non non. Connectez-vous à votre ordinateur en tant que compte d'administrateur local.

+0

Merci pour la réponse! J'ai deux questions de suivi: 1) Si je change le compte d'instance à mon propre compte d'utilisateur Windows, cela permettra-t-il toujours à ASP.NET l'accès dont il a besoin pour tester mes sites? 2) Comment puis-je changer le propriétaire de la base de données pour être moi-même (c'est en effet quelque chose que je souhaite faire)? Quand j'ai essayé, j'ai reçu le message d'autorisation refusé. A Catch 22 ... –

+0

Oui, à condition que le pool d'applications ASP.Net se connecte en tant que votre utilisateur. Si vous exécutez ASP.Net à partir du débogueur, cette instance s'exécute en tant qu'utilisateur. Dans IIS, cet utilisateur est défini par le "pool d'applications" qui exécute votre site. Vous pouvez en créer un personnalisé avec vos informations d'identification utilisateur, puis définir votre site Web pour qu'il s'exécute en tant qu'utilisateur. Toutefois, le problème est que vous n'obtiendrez toujours pas l'accès souhaité à votre base de données, car il est défini par la base de données et non par le compte d'instance SQL Server. – Spence

+0

Possédez-vous des privilèges administratifs? Si vous le faites, chexk quel compte vous connectez au studio de gestion. – Spence

Questions connexes