Come posso modificare il mio database predefinito in SQL Server senza utilizzare MS SQL Server Management Studio?


166

Ho eliminato un database da SQL Server, tuttavia risulta che il mio accesso è stato impostato per utilizzare il database eliminato come predefinito. Posso connettermi a SQL Server Management Studio utilizzando il pulsante "opzioni" nella finestra di dialogo della connessione e selezionando "master" come database a cui connettersi. Tuttavia, ogni volta che provo a fare qualcosa in Esplora oggetti, tenta di connettersi utilizzando il mio database predefinito e non riesce.

Qualcuno sa come impostare il mio database predefinito senza utilizzare Esplora oggetti ?

Risposte:


38

In alternativa a sp_defaultdb (che verrà rimosso in una versione futura di Microsoft SQL Server ) potrebbe essere ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Nota: diversamente dalla sp_defaultdbsoluzione, i nomi utente e database sono forniti senza virgolette. Le parentesi sono necessarie se il nome ha caratteri speciali (l'esempio più comune sarà l'utente di dominio che è dominio \ nomeutente e non funzionerà senza parentesi).


1
Bene, questa domanda sta diventando un po 'vecchia ora. All'epoca usavo SQL 2005. Alter Login non è stato aggiunto fino alla versione 2008.
Martin Brown,

@MartinBrown Sì, lo uso sp_deafultdbda anni. Sono rimasto sorpreso dal fatto che esiste un modo "nuovo".
Marek,

Nota: le virgolette singole non sono necessarie intorno ai campi nome_utente o database e potrebbero causare un errore. Mani ovvie o esperte, ma forse non così per chi lo fa occasionalmente. Parentesi quadre facoltative, se i campi rappresentano testo contiguo.
iokevins,

Mi collego al database PROD tramite un gruppo, quindi non ho un accesso individuale sul server, quando provo a eseguire quanto sopra ottengo "Impossibile modificare il login 'DOMAIN \ myuser', perché non esiste o tu non ho il permesso ". peggio ancora, sono in più gruppi perché ognuno mi dà accesso specifico a uno dei tanti DB sul server. suggerimenti?
matao,

1
Per trovare qual è il database predefinito di un login: selezionare name, default_database_name da sys.server_principals;
DocOc,

215

Quello che puoi fare è impostare il tuo database predefinito usando la stored procedure di sistema sp_defaultdb. Accedi come hai fatto e quindi fai clic sul pulsante Nuova query. Dopodiché, esegui semplicemente il comando sp_defaultdb come segue:

Exec sp_defaultdb @loginame='login', @defdb='master' 

Grazie davvero. Ha funzionato come un incantesimo (e mi ha insegnato il dialogo 'Opzioni' per specificare db).
penderi,

Questa domanda ha sollevato una domanda su meta
abele il

1
Non funziona così bene se fai parte di un gruppo AD e non desideri modificare il database predefinito per decine di altri sviluppatori.
DOK

@DOK: Ma suppongo che se il tuo login viene interrotto in questo modo, lo sono anche tutti gli altri sviluppatori. Quindi risolverlo per tutti sarebbe sicuramente una buona cosa?
Martin Brown,

Bene, ci sono una dozzina di database diversi su questa particolare istanza di SQL Server. Vorremmo tutti un database predefinito diverso. Se avessimo creato un gruppo di utenti diverso per ciascun database in modo che potesse avere il database predefinito desiderato, allora dovremmo essere tutti in un gruppo di gruppi di utenti diversi se volessimo vedere database diversi e quindi perderemmo il valore predefinito desiderato. Vorrei che in Management Studio esistesse un modo per riparare un database predefinito, ma finora non ho trovato un approccio che funzioni davvero.
DOK,

49

Per farlo nel modo GUI, devi modificare il tuo login. Una delle sue proprietà è il database predefinito utilizzato per tale accesso. Puoi trovare l'elenco degli accessi nel nodo Login sotto il nodo Sicurezza. Quindi selezionare il login e fare clic con il tasto destro del mouse e selezionare Proprietà. Cambia il database predefinito e la tua vita sarà migliore!

Si noti che qualcuno con i privilegi di amministratore di sistema deve essere in grado di accedere per fare questo o per eseguire la query dal post precedente.


funziona benissimo! appena digitato lì "master" db invece "default".
circa

1
Il problema che stavo riscontrando era che ero l'amministratore di sistema e che avevo eliminato il database che avevo impostato come predefinito e che in quanto tale non riuscivo nemmeno ad accedere a questa finestra di dialogo.
Martin Brown,

@MartinBrown sia come sia, non avevo lasciato cadere alcun tavolo ed ero ancora portato alla tua domanda, ma mi sentivo più a mio agio con la soluzione GUI.
DJV

41

Grazie a questo post , ho trovato una risposta più semplice:

  1. Apri SQL Server Management Studio

  2. Vai a Esplora oggetti -> Sicurezza -> Login

  3. Fare clic con il tasto destro sul login e selezionare Proprietà

  4. E nella finestra delle proprietà cambia il database predefinito e fai clic su OK.


1
Benvenuto in StackOverflow e grazie per aver fornito una risposta. Potresti dare un'occhiata alle funzionalità dell'editor Markdown, in modo da poter formattare blocchi di codice, elenchi, ecc .: stackoverflow.com/editing-help . Ho modificato la tua risposta per migliorare la formattazione per te.
Paul Turner,

Il punto centrale di questa domanda è che ciò che hai descritto non funziona se hai eliminato il database predefinito per il tuo account di accesso. Nel mio caso particolare ero l'unico amministratore del sistema, quindi non ho potuto usare l'account di qualcun altro per ottenere lo stesso effetto.
Martin Brown,

@Mattijs Spero che tu abbia letto quest'ultima riga della domanda "Qualcuno sa come impostare il mio database predefinito senza usare Esplora oggetti?". Questo è proprio quello che ti è stato chiesto di fare.
Rohit Vipin Mathews,

2
Questo potrebbe non aver risposto alla domanda del PO, ma ha risposto alla mia. È una risposta utile
CJ Dennis,

1
Questo non è possibile nei database di Azure: /
Squazz,

14

Se non si dispone delle autorizzazioni per modificare il DB predefinito, è possibile selezionare manualmente un DB diverso nella parte superiore delle query ...

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

Funzionerà finché si dispone dell'autorizzazione per l' altro DB


8
  1. Fai clic sull'icona Cambia connessione
  2. Fai clic su Opzioni <<
  3. Selezionare il db dal menu a discesa Connetti al database

Per qualche ragione questo ha funzionato per me in alcuni casi e non in altri.
levininja,

3

Preferirò anche il ALTER LOGINcomando come nella risposta accettata e descritto qui

Ma per gli amanti della GUI

  1. Vai a [ISTANZA SERVER] -> Sicurezza -> Login -> [IL TUO LOGIN]
  2. Fai clic destro su [IL TUO LOGIN]
  3. Aggiorna l'opzione di database predefinita nella parte inferiore della pagina

Stanco di leggere !!! basta guardare a seguito

inserisci qui la descrizione dell'immagine



0

Questo può o non può rispondere esattamente alla domanda, ma ho riscontrato questo problema (e la domanda) quando avevo cambiato il mio account per avere un nuovo database che avevo creato come "database predefinito". Quindi ho cancellato quel database e volevo testare da zero il mio script di creazione. Ho disconnesso SSMS e stavo per tornare indietro, ma mi è stato negato - impossibile accedere al database predefinito era l'errore. D'oh!

Quello che ho fatto è stato, nella finestra di dialogo di accesso per SSMS, andare su Opzioni, Proprietà connessione, quindi digitare mastersulla casella combinata "Connetti al database". Fai clic su Connetti. Mi ha fatto entrare. Da lì puoi eseguire il comando per:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO

-1

Se utilizzi l'autenticazione di Windows e non conosci una password per accedere come utente tramite nome utente e password, puoi farlo: nella schermata di accesso su SSMS fai clic sulle opzioni in basso a destra, quindi vai alla scheda delle proprietà della connessione . Quindi puoi digitare manualmente il nome di un altro database a cui hai accesso, su dove dice, che ti permetterà di connetterti. Quindi seguire gli altri consigli per modificare il database predefinito

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.