¿Cómo puedo cambiar mi base de datos predeterminada en SQL Server sin usar MS SQL Server Management Studio?

166

Eliminé una base de datos de SQL Server, sin embargo, resultó que mi inicio de sesión estaba configurado para usar la base de datos eliminada como predeterminada. Puedo conectarme a SQL Server Management Studio usando el botón 'opciones' en el cuadro de diálogo de conexión y seleccionando 'maestro' como la base de datos para conectarme. Sin embargo, cada vez que intento hacer algo en el explorador de objetos, intenta conectarse usando mi base de datos predeterminada y falla.

¿Alguien sabe cómo configurar mi base de datos predeterminada sin usar el explorador de objetos ?

Martin Brown
fuente

Respuestas:

38

La alternativa a sp_defaultdb (que se eliminará en una versión futura de Microsoft SQL Server ) podría ser ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Nota: a diferencia de la sp_defaultdbsolución, los nombres de usuario y de base de datos se proporcionan sin comillas. Los corchetes son necesarios si el nombre tiene caracteres especiales (el ejemplo más común será usuario de dominio que es dominio \ nombre de usuario y no funcionará sin corchetes).

Marek
fuente
1
Bueno, esta pregunta se está haciendo un poco vieja ahora. En ese momento estaba usando SQL 2005. Alter Login no se agregó hasta la versión 2008.
Martin Brown
@ MartinBrown Sí, lo he estado usando sp_deafultdbdurante años. Me sorprendió que haya una "nueva" forma.
Marek
Nota: las comillas simples no son necesarias alrededor de los campos my_user_name o database y pueden causar un error. Obvio para manos experimentadas, pero tal vez no sea así para aquellos que hacen esto ocasionalmente. Corchetes opcionales, si los campos representan texto contiguo.
iokevins
Me conecto a la base de datos PROD a través de un grupo, por lo que no tengo un inicio de sesión individual en el servidor, cuando trato de ejecutar lo anterior aparece "No se puede alterar el inicio de sesión 'DOMINIO \ miusuario' porque no existe o usted no tengo permiso ". peor aún, estoy en varios grupos porque cada uno me da acceso específico a uno de los muchos DB en el servidor. sugerencias?
matao 01 de
1
Para encontrar cuál es la base de datos predeterminada de un inicio de sesión: seleccione el nombre, default_database_name de sys.server_principals;
DocOc
215

Lo que puede hacer es configurar su base de datos predeterminada utilizando el procedimiento almacenado del sistema sp_defaultdb. Inicie sesión como lo ha hecho y luego haga clic en el botón Nueva consulta. Después de eso, simplemente ejecute el comando sp_defaultdb de la siguiente manera:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
fuente
Gracias de hecho. Funcionó de maravilla (y me enseñó sobre el diálogo 'Opciones' para especificar db).
penderi
Esta pregunta ha planteado una pregunta sobre meta
abel
1
No funciona tan bien si está en un grupo de AD y no desea cambiar la base de datos predeterminada para docenas de otros desarrolladores.
DOK
@DOK: Pero supongo que si su inicio de sesión se rompe de esta manera, también lo están todos los demás desarrolladores. Entonces, ¿arreglarlo para todos seguramente sería algo bueno?
Martin Brown
Bueno, hay una docena de bases de datos diferentes en esta instancia particular de SQL Server. Todos querríamos una base de datos predeterminada diferente. Si creáramos un grupo de usuarios diferente para cada base de datos para que pudiera tener la base de datos predeterminada deseada, entonces todos tendríamos que estar en un grupo de diferentes grupos de usuarios si quisiéramos ver diferentes bases de datos, y luego perderíamos el predeterminado deseado. Desearía que hubiera una forma en Management Studio para arreglar una base de datos predeterminada, pero hasta ahora no he encontrado un enfoque que realmente funcione.
DOK
49

Para hacerlo a la GUI, debes editar tu inicio de sesión. Una de sus propiedades es la base de datos predeterminada utilizada para ese inicio de sesión. Puede encontrar la lista de inicios de sesión en el nodo Inicios de sesión en el nodo Seguridad. Luego seleccione su inicio de sesión y haga clic derecho y seleccione Propiedades. ¡Cambie la base de datos predeterminada y su vida será mejor!

Tenga en cuenta que alguien con sysadmin privs debe poder iniciar sesión para hacer esto o ejecutar la consulta de la publicación anterior.

Marcus Erickson
fuente
esto funciona bien! simplemente escribí allí "master" db en lugar de "default".
apprich
1
El problema que estaba teniendo era que yo era el administrador del sistema y había eliminado la base de datos que había configurado por defecto y, como tal, ni siquiera podía acceder a este cuadro de diálogo.
Martin Brown
@MartinBrown sea como fuere, no había descartado ninguna tabla y todavía me llevaron a su pregunta, pero me sentí más cómodo con la solución GUI.
djv
41

Gracias a esta publicación , encontré una respuesta más fácil:

  1. Abra SQL Server Management Studio

  2. Vaya al explorador de objetos -> Seguridad -> Inicios de sesión

  3. Haga clic derecho en el inicio de sesión y seleccione propiedades

  4. Y en la ventana de propiedades, cambie la base de datos predeterminada y haga clic en Aceptar.

Mattijs
fuente
1
Bienvenido a StackOverflow y gracias por proporcionar una respuesta. Es posible que desee echar un vistazo a las características del editor Markdown, para que pueda formatear bloques de código, listas, etc .: stackoverflow.com/editing-help . He editado tu respuesta para mejorar el formato para ti.
Paul Turner
El objetivo de esta pregunta es que lo que ha descrito no funciona si ha eliminado la base de datos predeterminada para su propia cuenta de inicio de sesión. En mi caso particular, era el único administrador del sistema, por lo que tampoco podía usar la cuenta de otra persona para lograr el mismo efecto.
Martin Brown
@Mattijs Espero que leas esta última línea de la pregunta "¿Alguien sabe cómo configurar mi base de datos predeterminada sin usar el explorador de objetos?". Eso es justo lo que has pedido hacer.
Rohit Vipin Mathews
2
Esto podría no haber respondido la pregunta del OP, pero respondió la mía. Es una respuesta útil.
CJ Dennis
1
Esto no es posible en las bases de datos de Azure: /
Squazz
14

Si no tiene permisos para cambiar su base de datos predeterminada, puede seleccionar manualmente una base de datos diferente en la parte superior de sus consultas ...

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

Funcionará siempre que tenga permiso para el otro DB

Greg B
fuente
8
  1. Haga clic en el icono Cambiar conexión
  2. Haga clic en Opciones <<
  3. Seleccione la base de datos del menú desplegable Conectar a la base de datos
Ravishankar S
fuente
Por alguna razón, esto me ha funcionado en algunos casos y no en otros.
levininja
3

También preferiré ALTER LOGINCommand como en la respuesta aceptada y descrita aquí

Pero para el amante de la GUI

  1. Vaya a [INSTANCIA DEL SERVIDOR] -> Seguridad -> Inicios de sesión -> [SU INICIO DE SESIÓN]
  2. Haga clic derecho en [SU INICIO DE SESIÓN]
  3. Actualice la opción de base de datos predeterminada en la parte inferior de la página

Cansado de leer !!! solo mira lo siguiente

ingrese la descripción de la imagen aquí

Mubashar
fuente
0

Esto puede o no responder exactamente la pregunta, pero me encontré con este problema (y pregunta) cuando cambié mi cuenta para tener una nueva base de datos que había creado como mi "base de datos predeterminada". Luego eliminé esa base de datos y quería probar mi script de creación, desde cero. Me desconecté de SSMS e iba a volver a ingresar, pero se me negó; el error no se pudo iniciar sesión en la base de datos predeterminada. D'oh!

Lo que hice fue, en el cuadro de diálogo de inicio de sesión para SSMS, ir a Opciones, Propiedades de conexión, luego escribir masteren el cuadro combinado "Conectar a la base de datos". Haz clic en Conectar. Me metió. Desde allí puede ejecutar el comando para:

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

Si usa la autenticación de Windows y no conoce una contraseña para iniciar sesión como usuario mediante nombre de usuario y contraseña, puede hacer esto: en la pantalla de inicio de sesión en SSMS, haga clic en las opciones en la parte inferior derecha, luego vaya a la pestaña de propiedades de conexión . Luego, puede escribir manualmente el nombre de otra base de datos a la que tenga acceso, sobre donde dice, lo que le permitirá conectarse. Luego siga los otros consejos para cambiar su base de datos predeterminada

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
fuente