Comment puis-je modifier ma base de données par défaut dans SQL Server sans utiliser MS SQL Server Management Studio?

166

J'ai supprimé une base de données de SQL Server, mais il s'avère que ma connexion a été définie pour utiliser la base de données supprimée par défaut. Je peux me connecter à SQL Server Management Studio en utilisant le bouton «options» dans la boîte de dialogue de connexion et en sélectionnant «maître» comme base de données à laquelle me connecter. Cependant, chaque fois que j'essaye de faire quoi que ce soit dans l'explorateur d'objets, il essaie de se connecter en utilisant ma base de données par défaut et échoue.

Est-ce que quelqu'un sait comment définir ma base de données par défaut sans utiliser l'explorateur d'objets ?

Martin Brown
la source

Réponses:

38

Une alternative à sp_defaultdb (qui sera supprimée dans une future version de Microsoft SQL Server ) pourrait être ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Remarque: contrairement à la sp_defaultdbsolution, les noms d'utilisateur et de base de données sont fournis sans guillemets. Des crochets sont nécessaires si le nom a des caractères spéciaux (l'exemple le plus courant sera l'utilisateur de domaine qui est domaine \ nom d'utilisateur et ne fonctionnera pas sans crochets).

Marek
la source
1
Eh bien, cette question vieillit un peu maintenant. À l'époque, j'utilisais SQL 2005. Alter Login n'a été ajouté qu'à la version 2008.
Martin Brown
@MartinBrown Oui, j'utilise depuis sp_deafultdbdes lustres. J'ai été surpris qu'il y ait une «nouvelle» façon.
Marek
Remarque: les guillemets simples ne sont pas nécessaires autour des champs mon_nom_utilisateur ou de la base de données et peuvent provoquer une erreur. Évident pour les mains expérimentées, mais peut-être pas pour ceux qui le font occasionnellement. Les crochets sont facultatifs, si les champs représentent du texte contigu.
iokevins
Je me connecte à la base de données PROD via un groupe, donc je n'ai pas de connexion individuelle sur le serveur, lorsque j'essaie d'exécuter ce qui précède, j'obtiens "Impossible de modifier la connexion 'DOMAIN \ myuser', car elle n'existe pas ou vous n’ont pas d’autorisation. ". Pire encore, je suis dans plusieurs groupes car chacun me donne un accès spécifique à l'une des nombreuses bases de données du serveur. suggestions?
matao
1
Pour trouver ce qu'est la base de données par défaut d'une connexion: sélectionnez name, default_database_name dans sys.server_principals;
DocOc
215

Vous pouvez définir votre base de données par défaut à l'aide de la procédure stockée système sp_defaultdb. Connectez-vous comme vous l'avez fait, puis cliquez sur le bouton Nouvelle requête. Après cela, exécutez simplement la commande sp_defaultdb comme suit:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
la source
Merci vraiment. A fonctionné comme un charme (et m'a appris sur le dialogue «Options» pour spécifier db).
penderi
Cette question a soulevé une question sur meta
abel
1
Cela ne fonctionne pas si bien si vous êtes dans un groupe AD et que vous ne souhaitez pas modifier la base de données par défaut pour des dizaines d'autres développeurs.
DOK
@DOK: Mais je suppose que si votre connexion est interrompue de cette manière, tous les autres développeurs le sont aussi. Donc le réparer pour tous serait sûrement une bonne chose?
Martin Brown
Eh bien, il existe une douzaine de bases de données différentes sur cette instance SQL Server particulière. Nous voudrions tous une base de données par défaut différente. Si nous créions un groupe d'utilisateurs différent pour chaque base de données afin qu'elle puisse avoir la base de données par défaut souhaitée, nous devrons tous être dans un tas de groupes d'utilisateurs différents si nous voulions voir différentes bases de données, et alors nous perdrions la valeur par défaut souhaitée. J'aurais aimé qu'il y ait un moyen dans Management Studio de corriger une base de données par défaut, mais jusqu'à présent, je n'ai pas trouvé d'approche qui fonctionne réellement.
DOK
49

Pour le faire à la manière de l'interface graphique, vous devez aller modifier votre connexion. L'une de ses propriétés est la base de données par défaut utilisée pour cette connexion. Vous pouvez trouver la liste des connexions sous le nœud Connexions sous le nœud Sécurité. Sélectionnez ensuite votre connexion et cliquez avec le bouton droit de la souris et choisissez Propriétés. Changez la base de données par défaut et votre vie sera meilleure!

Notez que quelqu'un avec sysadmin privs doit pouvoir se connecter pour ce faire ou pour exécuter la requête à partir du message précédent.

Marcus Erickson
la source
cela fonctionne très bien! juste tapé là "master" db au lieu de "default".
apprich
1
Le problème que j'avais était que j'étais l'administrateur système et que j'avais supprimé la base de données que j'avais définie par défaut et que je ne pouvais même pas accéder à cette boîte de dialogue.
Martin Brown
@MartinBrown quoi qu'il en soit, je n'avais laissé tomber aucune table et j'étais toujours conduit à votre question, mais je me sentais plus à l'aise avec la solution GUI.
djv
41

Grâce à cet article , j'ai trouvé une réponse plus simple:

  1. Ouvrez Sql Server Management Studio

  2. Allez dans l'Explorateur d'objets -> Sécurité -> Connexions

  3. Faites un clic droit sur la connexion et sélectionnez les propriétés

  4. Et dans la fenêtre des propriétés, modifiez la base de données par défaut et cliquez sur OK.

Mattijs
la source
1
Bienvenue sur StackOverflow et merci d'avoir fourni une réponse. Vous voudrez peut-être jeter un œil aux fonctionnalités de l'éditeur Markdown, afin de pouvoir formater des blocs de code, des listes, etc.: stackoverflow.com/editing-help . J'ai modifié votre réponse pour améliorer la mise en forme pour vous.
Paul Turner
Le but de cette question est que ce que vous avez décrit ne fonctionne pas si vous avez supprimé la base de données par défaut de votre propre compte de connexion. Dans mon cas particulier, j'étais le seul administrateur du système et je ne pouvais donc pas utiliser le compte de quelqu'un d'autre pour obtenir le même effet.
Martin Brown
@Mattijs J'espère que vous avez lu cette dernière ligne de la question "Est-ce que quelqu'un sait comment définir ma base de données par défaut sans utiliser l'explorateur d'objets?". C'est exactement ce que vous avez demandé à faire.
Rohit Vipin Mathews
2
Cela n'a peut-être pas répondu à la question du PO, mais cela a répondu à la mienne. C'est une réponse utile.
CJ Dennis
1
Ce n'est pas possible dans les bases de données Azure: /
Squazz
14

Si vous ne disposez pas des autorisations nécessaires pour modifier votre base de données par défaut, vous pouvez sélectionner manuellement une autre base de données en haut de vos requêtes ...

USE [SomeOtherDb]
SELECT 'I am now using a different DB'

Fonctionnera tant que vous aurez l'autorisation de l' autre DB

Greg B
la source
8
  1. Cliquez sur l'icône Modifier la connexion
  2. Cliquez sur Options <<
  3. Sélectionnez la base de données dans la liste déroulante Se connecter à la base de données
Ravishankar S
la source
Pour une raison quelconque, cela a fonctionné pour moi dans certains cas et pas dans d'autres.
levininja
3

Je préférerai également la ALTER LOGINcommande comme réponse acceptée et décrite ici

Mais pour les amoureux de l'interface graphique

  1. Allez dans [SERVER INSTANCE] -> Security -> Logins -> [YOUR LOGIN]
  2. Faites un clic droit sur [VOTRE CONNEXION]
  3. Mettre à jour l'option de base de données par défaut au bas de la page

Fatigué de lire !!! regarde juste après

entrez la description de l'image ici

Mubashar
la source
0

Cela peut ou non répondre exactement à la question, mais je suis tombé sur ce problème (et cette question) lorsque j'avais changé mon compte pour avoir une nouvelle base de données que j'avais créée comme "base de données par défaut". Ensuite, j'ai supprimé cette base de données et j'ai voulu tester mon script de création, à partir de zéro. Je me suis déconnecté de SSMS et j'allais y retourner, mais j'ai été refusé - impossible de me connecter à la base de données par défaut était l'erreur. Oh!

Ce que j'ai fait, c'est, dans la boîte de dialogue de connexion pour SSMS, allez dans Options, Propriétés de connexion, puis tapez mastersur la zone de liste déroulante "Se connecter à la base de données". Cliquez sur Connecter. Je suis entré. De là, vous pouvez exécuter la commande pour:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO
vapcguy
la source
-1

Si vous utilisez l'authentification Windows et que vous ne connaissez pas de mot de passe pour vous connecter en tant qu'utilisateur via le nom d'utilisateur et le mot de passe, vous pouvez le faire: sur l'écran de connexion sur SSMS, cliquez sur les options en bas à droite, puis accédez à l'onglet des propriétés de connexion . Ensuite, vous pouvez taper manuellement le nom d'une autre base de données à laquelle vous avez accès, à l'endroit où il est indiqué, ce qui vous permettra de vous connecter. Suivez ensuite les autres conseils pour changer votre base de données par défaut

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
la source