Bagaimana saya bisa mengubah database default saya di SQL Server tanpa menggunakan MS SQL Server Management Studio?

166

Saya menjatuhkan database dari SQL Server, namun ternyata login saya diatur untuk menggunakan database yang dijatuhkan sebagai default. Saya dapat terhubung ke SQL Server Management Studio dengan menggunakan tombol 'opsi' dalam dialog koneksi dan memilih 'master' sebagai basis data untuk terhubung. Namun, setiap kali saya mencoba melakukan apa pun di objek explorer, itu mencoba untuk terhubung menggunakan database default saya dan gagal.

Apakah ada yang tahu cara mengatur database default saya tanpa menggunakan objek explorer ?

Martin Brown
sumber

Jawaban:

38

Alternatif untuk sp_defaultdb (yang akan dihapus dalam versi Microsoft SQL Server di masa depan ) dapat berupa ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Catatan: tidak seperti sp_defaultdbpengguna solusi dan nama basis data diberikan tanpa tanda kutip. Tanda kurung diperlukan jika nama memiliki karakter khusus (contoh paling umum adalah pengguna domain yang merupakan domain \ nama pengguna dan tidak akan berfungsi tanpa tanda kurung).

Marek
sumber
1
Nah pertanyaan ini sudah agak tua sekarang. Saat itu saya menggunakan SQL 2005. Alter Login tidak ditambahkan hingga versi 2008.
Martin Brown
@ MartinBrown Ya, saya telah menggunakan sp_deafultdbselama berabad-abad. Saya terkejut bahwa ada cara "baru".
Marek
Catatan: kutipan tunggal tidak diperlukan di sekitar bidang my_user_name atau database dan dapat menyebabkan kesalahan. Jelas untuk tangan yang berpengalaman tetapi mungkin tidak demikian bagi mereka yang melakukan ini sesekali. Kurung kotak opsional, jika bidang mewakili teks yang berdekatan.
iokevins
Saya terhubung ke basis data PROD melalui grup, jadi saya tidak memiliki satu Login individu di server, ketika saya mencoba untuk menjalankan di atas saya mendapatkan "Tidak dapat mengubah login 'DOMAIN \ myuser', karena itu tidak ada atau Anda tidak memiliki izin. " lebih buruk lagi saya berada dalam beberapa grup karena masing-masing memberikan saya akses spesifik ke salah satu dari banyak DB di server. saran?
matao
1
Untuk menemukan apa database default login: pilih nama, default_database_name dari sys.server_principals;
DocOc
215

Yang dapat Anda lakukan adalah mengatur basis data default Anda menggunakan prosedur tersimpan sistem sp_defaultdb. Masuk seperti yang telah Anda lakukan dan kemudian klik tombol Permintaan Baru. Setelah itu cukup jalankan perintah sp_defaultdb sebagai berikut:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
sumber
Terima kasih banyak. Bekerja seperti pesona (dan mengajari saya tentang dialog 'Opsi' untuk menentukan db).
penderi
Pertanyaan ini menimbulkan pertanyaan tentang meta
abel
1
Tidak berfungsi dengan baik jika Anda berada dalam grup AD dan Anda tidak ingin mengubah database default untuk puluhan pengembang lainnya.
DOK
@DOK: Tapi saya akan berasumsi bahwa jika login Anda rusak dengan cara ini maka semua pengembang lainnya. Jadi memperbaikinya untuk mereka semua pasti akan menjadi hal yang baik?
Martin Brown
Nah, ada selusin database berbeda pada contoh SQL Server khusus ini. Kita semua menginginkan database default yang berbeda. Jika kami membuat grup pengguna yang berbeda untuk setiap basis data sehingga bisa memiliki database default yang diinginkan, maka kita semua harus berada dalam kelompok grup pengguna yang berbeda jika kita ingin melihat basis data yang berbeda, dan kemudian kita akan kehilangan default yang diinginkan. Saya berharap ada cara di Management Studio untuk memperbaiki database default, tapi sejauh ini saya belum menemukan pendekatan yang benar-benar berfungsi.
DOK
49

Untuk melakukannya dengan cara GUI, Anda perlu mengedit login Anda. Salah satu propertinya adalah database default yang digunakan untuk login itu. Anda dapat menemukan daftar login di bawah simpul login di bawah simpul keamanan. Kemudian pilih login Anda dan klik kanan dan pilih Properties. Ubah database default dan hidup Anda akan lebih baik!

Perhatikan bahwa seseorang dengan sysadmin privs harus dapat masuk untuk melakukan ini atau menjalankan kueri dari posting sebelumnya.

Marcus Erickson
sumber
ini bekerja dengan baik! ketikkan saja "master" db "default".
apprich
1
Masalah yang saya alami adalah bahwa saya adalah sysadmin dan telah menghapus database yang telah saya atur ke default dan karena itu bahkan tidak bisa masuk ke dialog ini.
Martin Brown
@ MartinBrown seperti itu, saya belum menjatuhkan tabel dan saya masih mengarah ke pertanyaan Anda, tetapi merasa lebih nyaman dengan solusi GUI.
djv
41

Berkat posting ini , saya menemukan jawaban yang lebih mudah:

  1. Buka Sql Server Management Studio

  2. Pergi ke objek Explorer -> Keamanan -> Login

  3. Klik kanan pada login dan pilih properti

  4. Dan di jendela properti ubah database default dan klik OK.

Mattijs
sumber
1
Selamat datang di StackOverflow dan terima kasih telah memberikan jawaban. Anda mungkin ingin melihat fitur-fitur editor Markdown, sehingga Anda dapat memformat blok kode, daftar, dll .: stackoverflow.com/editing-help . Saya telah mengedit jawaban Anda untuk menyempurnakan pemformatan untuk Anda.
Paul Turner
Inti dari pertanyaan ini adalah bahwa apa yang Anda uraikan tidak berfungsi jika Anda telah menghapus database default untuk akun login Anda sendiri . Dalam kasus khusus saya, saya adalah satu-satunya administrator dalam sistem sehingga tidak dapat menggunakan akun orang lain untuk mencapai efek yang sama.
Martin Brown
@Mattijs Harap Anda membaca baris terakhir dari pertanyaan "Apakah ada yang tahu cara mengatur database default saya tanpa menggunakan objek explorer?". Itulah yang Anda minta lakukan.
Rohit Vipin Mathews
2
Ini mungkin tidak menjawab pertanyaan OP, tetapi menjawab pertanyaan saya. Itu jawaban yang berguna.
CJ Dennis
1
Ini tidak dimungkinkan di Azure Database: /
Squazz
14

Jika Anda tidak memiliki izin untuk mengubah DB default Anda, Anda bisa secara manual memilih DB yang berbeda di bagian atas kueri Anda ...

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

Akan bekerja selama Anda memiliki izin ke DB lain

Greg B
sumber
8
  1. Klik pada ikon Ubah Koneksi
  2. Klik Opsi <<
  3. Pilih db dari drop down Connect to database
Ravishankar S
sumber
Untuk beberapa alasan ini berhasil bagi saya dalam beberapa kasus dan tidak pada yang lain.
levininja
3

Saya juga akan lebih suka ALTER LOGINCommand seperti pada jawaban yang diterima dan dijelaskan di sini

Tapi untuk kekasih GUI

  1. Pergi ke [SERVER INSTANCE] -> Keamanan -> Login -> [MASUK ANDA]
  2. Klik kanan pada [MASUK ANDA]
  3. Perbarui Opsi Database Default di bagian bawah halaman

Lelah membaca !!! lihat saja berikut ini

masukkan deskripsi gambar di sini

Mubashar
sumber
0

Ini mungkin atau mungkin tidak tepat menjawab pertanyaan, tetapi saya mengalami masalah ini (dan pertanyaan) ketika saya mengubah akun saya untuk memiliki database baru yang saya buat sebagai "database default". Lalu saya menghapus database itu dan ingin menguji skrip kreasi saya, dari awal. Saya log off SSMS dan akan kembali, tetapi ditolak - tidak bisa masuk ke database default adalah kesalahan. Doh!

Apa yang saya lakukan adalah, pada dialog masuk untuk SSMS, buka Opsi, Properti Koneksi, lalu ketik masterkotak kombo "Sambungkan ke database". Klik Hubungkan. Dapatkan saya. Dari sana Anda dapat menjalankan perintah untuk:

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

Jika Anda menggunakan otentikasi windows, dan Anda tidak tahu kata sandi untuk masuk sebagai pengguna melalui nama pengguna dan kata sandi, Anda dapat melakukan ini: pada layar masuk pada opsi klik SSMS di kanan bawah, kemudian buka tab properti koneksi . Kemudian Anda bisa mengetik secara manual nama basis data lain yang Anda miliki aksesnya, ke tempat katanya, yang memungkinkan Anda terhubung. Kemudian ikuti saran lain untuk mengubah database default Anda

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
sumber