Como posso alterar meu banco de dados padrão no SQL Server sem usar o MS SQL Server Management Studio?

166

Larguei um banco de dados do SQL Server; no entanto, meu login foi definido para usar o banco de dados descartado como padrão. Posso conectar-me ao SQL Server Management Studio usando o botão 'opções' na caixa de diálogo de conexão e selecionando 'mestre' como o banco de dados ao qual conectar-me. No entanto, sempre que tento fazer algo no Pesquisador de Objetos, ele tenta se conectar usando meu banco de dados padrão e falha.

Alguém sabe como definir meu banco de dados padrão sem usar o explorador de objetos ?

Martin Brown
fonte

Respostas:

38

Uma alternativa ao sp_defaultdb (que será removido em uma versão futura do Microsoft SQL Server ) pode ser ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Nota: diferente dos sp_defaultdbnomes de usuário e banco de dados da solução, são fornecidos sem aspas. Os colchetes são necessários se o nome tiver caracteres especiais (o exemplo mais comum será o usuário do domínio, que é domínio \ nome de usuário e não funcionará sem colchetes).

Marek
fonte
1
Bem, esta questão está ficando um pouco antiga agora. Na época, eu estava usando o SQL 2005. O Alter Login não foi adicionado até a versão de 2008.
Martin Brown
@MartinBrown Sim, estou usando sp_deafultdbhá anos. Fiquei surpreso que existe um caminho "novo".
Marek
Nota: aspas simples não são necessárias nos campos my_user_name ou banco de dados e podem causar um erro. Óbvio para as mãos experientes, mas talvez não o seja para aqueles que fazem isso ocasionalmente. Colchetes opcionais, se os campos representarem texto contíguo.
iokevins
Eu me conecto ao banco de dados PROD por meio de um grupo, para não ter um Login individual no servidor. Quando tento executar o procedimento acima, recebo "Não é possível alterar o login 'DOMAIN \ myuser', porque ele não existe ou você não tem permissão. " pior ainda, estou em vários grupos, porque cada um me dá acesso específico a um dos muitos bancos de dados no servidor. sugestões?
Matao 01/02/19
1
Para descobrir qual é o banco de dados padrão de um logon: selecione o nome, default_database_name em sys.server_principals;
DocOc
215

O que você pode fazer é definir seu banco de dados padrão usando o procedimento armazenado do sistema sp_defaultdb. Efetue login como você fez e clique no botão Nova Consulta. Depois disso, basta executar o comando sp_defaultdb da seguinte maneira:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
fonte
Obrigado mesmo. Funcionou como um encanto (e me ensinou sobre o diálogo 'Opções' para especificar db).
penderi
Esta questão levantou uma questão sobre meta
abel
1
Não funciona tão bem se você estiver em um grupo do AD e não desejar alterar o banco de dados padrão para dezenas de outros desenvolvedores.
DOK 14/11
@DOK: Mas eu diria que, se o seu login for interrompido dessa maneira, todos os outros desenvolvedores também. Então, corrigi-lo para todos eles certamente seria uma coisa boa?
Martin Brown
Bem, há uma dúzia de bancos de dados diferentes nessa instância específica do SQL Server. Todos nós queremos um banco de dados padrão diferente. Se criamos um grupo de usuários diferente para cada banco de dados para que ele possa ter o banco de dados padrão desejado, todos nós teríamos que estar em um grupo de grupos de usuários diferentes se quiséssemos ver bancos de dados diferentes e perderíamos o padrão desejado. Gostaria que houvesse uma maneira no Management Studio de corrigir um banco de dados padrão, mas até agora não encontrei uma abordagem que realmente funcione.
DOK
49

Para fazer isso da maneira GUI, você precisa editar seu login. Uma de suas propriedades é o banco de dados padrão usado para esse logon. Você pode encontrar a lista de logons no nó Logins, no nó Segurança. Em seguida, selecione seu login e clique com o botão direito do mouse e escolha Propriedades. Mude o banco de dados padrão e sua vida será melhor!

Observe que alguém com sysadmin privs precisa poder fazer login para fazer isso ou executar a consulta da postagem anterior.

Marcus Erickson
fonte
isso funciona bem! acabou de digitar lá "master" db em vez de "default".
APPRICH
1
O problema que eu estava tendo era que eu era o administrador de sistemas e havia excluído o banco de dados que havia definido como padrão e, como tal, não conseguia nem chegar a esse diálogo.
Martin Brown
@MartinBrown, seja como for, eu não tinha deixado cair nenhuma tabela e ainda fui levado à sua pergunta, mas me senti mais confortável com a solução da GUI.
DJV
41

Graças a este post , encontrei uma resposta mais fácil:

  1. Abra o Sql Server Management Studio

  2. Vá para o objeto Explorer -> Segurança -> Logins

  3. Clique com o botão direito do mouse no login e selecione Propriedades

  4. E na janela de propriedades, altere o banco de dados padrão e clique em OK.

Mattijs
fonte
1
Bem-vindo ao StackOverflow e obrigado por fornecer uma resposta. Você pode dar uma olhada nos recursos do editor Markdown, para poder formatar blocos de código, listas, etc .: stackoverflow.com/editing-help . Editei sua resposta para melhorar a formatação para você.
Paul Turner
O ponto principal desta pergunta é que o que você descreveu não funcionará se você excluiu o banco de dados padrão da sua própria conta de logon. No meu caso em particular, eu era o único administrador do sistema e, portanto, também não podia usar a conta de outra pessoa para obter o mesmo efeito.
Martin Brown
@Mattijs Espero que você leia esta última linha da pergunta "Alguém sabe como definir meu banco de dados padrão sem usar o explorador de objetos?". Isso é exatamente o que você pediu para fazer.
Rohit Vipin Mathews
2
Isso pode não ter respondido à pergunta do OP, mas respondeu à minha. É uma resposta útil.
CJ Dennis
1
Isso não é possível nos bancos de dados do Azure: /
Squazz 28/17
14

Se você não tiver permissões para alterar seu banco de dados padrão, poderá selecionar manualmente um banco de dados diferente na parte superior de suas consultas ...

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

Funcionará desde que você tenha permissão para o outro banco de dados

Greg B
fonte
8
  1. Clique no ícone Alterar conexão
  2. Clique em Opções <<
  3. Selecione o banco de dados no menu suspenso Conectar ao banco de dados
Ravishankar S
fonte
Por alguma razão, isso funcionou para mim em alguns casos e não em outros.
precisa saber é
3

Também vou preferir o ALTER LOGINCommand como na resposta aceita e descrita aqui

Mas para o amante da GUI

  1. Vá para [SERVIDOR INSTANCE] -> Security -> Logins -> [YOUR LOGIN]
  2. Clique com o botão direito em [SEU LOGIN]
  3. Atualize a opção de banco de dados padrão na parte inferior da página

Cansado de ler !!! basta olhar para o seguinte

insira a descrição da imagem aqui

Mubashar
fonte
0

Isso pode ou não responder exatamente à pergunta, mas me deparei com esse problema (e pergunta) quando alterei minha conta para ter um novo banco de dados que criei como meu "banco de dados padrão". Excluí esse banco de dados e queria testar meu script de criação, do zero. Efetuei logoff do SSMS e voltaria, mas foi negado - não foi possível efetuar o login no banco de dados padrão. D'oh!

O que fiz foi, na caixa de diálogo de login do SSMS, ir para Opções, Propriedades da conexão e digite mastera caixa de combinação "Conectar ao banco de dados". Clique em conectar. Entrei. A partir daí, você pode executar o comando para:

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

Se você usa a autenticação do Windows e não conhece uma senha para fazer login como usuário por meio de nome de usuário e senha, pode fazer o seguinte: na tela de login no SSMS, clique em opções na parte inferior direita e vá para a guia Propriedades da conexão. . Em seguida, você pode digitar manualmente o nome de outro banco de dados ao qual tem acesso, onde diz: que permitirá a conexão. Em seguida, siga os outros conselhos para alterar seu banco de dados padrão

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
fonte