Bagaimana cara memindahkan folder contoh SQL Server LocalDB dari lokasi default?

12

Saya mendapatkan beberapa kesalahan dengan LocalDB( kesalahan startup , tidak dapat membuat DB dari SQL Server Management Studio dan juga beberapa masalah ketika mencoba mengembalikan cadangan) dan tidak ada perbaikan yang saya temukan membantu sesuatu. Sepertinya saya bahwa semua kesalahan memiliki izin root tidak diatur dengan benar.

Sekarang skrip pembuatan tabel DDL sederhana berfungsi dengan baik dari SQL Server Management Studio dan membuat database di root folder akun pengguna saya ( seperti yang dijelaskan di sini ). Namun folder Instances (terletak di D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesmeskipun ketika menginstal SQL Server Express dengan Layanan Lanjutan Saya menentukan folder DATA di lokasi lain - di mana hanya .mdffile SQL Server Express standar disimpan, tetapi tidak LocalDBinstance) tampaknya bermasalah mengenai izin (bertentangan dengan akun root) karena itu dan juga karena memiliki file DB saya di lokasi di antara proyek saya, saya ingin memindahkan folder Instances ke tempat lain. Apakah ini mungkin? Saya bahkan belum menemukan entri registri yang sesuai.

Saya menggunakan SQL Server Express 2012 dan juga SSMS dari versi yang sama (pembaruan terbaru diinstal).

Bantuan apa pun akan dihargai.

Sunting: Halaman Pengaturan Database KookieMonster yang disebutkan sebelumnya membuat kesalahan bagi saya, tidak dapat mengedit atau melihat konfigurasi apa pun di sana. Saya membiarkan Pembaruan Windows memeriksa pembaruan lagi dan ada beberapa pembaruan untuk SQL Server Express yang tidak diinstal (walaupun saya yakin saya memilih semuanya untuk diinstal sebelumnya), jadi saya menginstalnya. Ini memungkinkan saya untuk pergi ke halaman pengaturan.

Saya sudah mencoba mengatur folder root instance LocalDB ke tempat lain tetapi saya mendapatkan kesalahan akses ditolak untuk setiap folder yang saya coba, yaitu

Alter gagal untuk Pengaturan 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'. (Microsoft.SqlServer.Smo)

------------------------------ INFORMASI TAMBAHAN:

Pengecualian terjadi saat menjalankan pernyataan atau kumpulan Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx () mengembalikan kesalahan 5, 'Akses ditolak.' (Microsoft SQL Server, Kesalahan: 22002)

Saya mendapatkan ini bahkan jika folder memiliki kontrol penuh yang ditetapkan untuk Semua Orang! Yang lebih lucu adalah satu-satunya folder yang berfungsi, folder yang ditetapkan sebagai default (root akun pengguna) tidak memiliki izin khusus yang diterapkan - hanya yang dimiliki pengguna saya (sama seperti folder lain yang saya coba atur). Akibatnya, ini berarti semua file database LocalDB saya disimpan ke folder root akun saya.

Piedone
sumber
1
Apa yang terjadi ketika Anda membuat database dan secara eksplisit mengatur file ke lokasi tertentu alih-alih mengambil default?
Aaron Bertrand
1
Terima kasih untuk balasan Anda! Itu berfungsi (jika saya memilih folder yang sesuai seperti folder proyek saya) tetapi sangat merepotkan harus menentukan path setiap waktu. Saya hanya tidak percaya tidak ada cara untuk mengubah default.
Piedone
Apa yang terjadi ketika Anda pergi ke node server, klik kanan, properti, parameter basis data dan beralih lokasi default? Apakah nilai yang Anda tetapkan selama instalasi atau yang lain?
KookieMonster
Saya sudah mengalami masalah yang sama persis. Saya pikir alasan mengubah izin folder tidak berpengaruh adalah karena ini sebenarnya memberitahu Anda ada masalah izin dengan registri, secara khusus membuat kunci registri (lihat bagian terakhir: RegCreateKeyEx). Sayangnya saya tidak tahu kunci apa yang ingin dibuat.
daveaglick

Jawaban:

13

Lihat komentar saya di atas. Saya menggunakan Monitor Proses untuk melacak akses registri dan menemukan itu mendapat Akses Ditolak ketika mencoba untuk menulis:

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

Saya menyiasatinya dengan membuka Registry Editor dan memberi semua orang akses penuh HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer. Lalu saya mengubah lokasi default dan menghapus akses Semua orang setelah selesai. Ini membuat kunci tambahan berikut yang tidak ada di sana sebelumnya:

DefaultData

DefaultLog

BackupDirectory

daveaglick
sumber
Terima kasih. Saya telah menempuh rute yang berbeda pada akhirnya, jadi tidak dapat menguji bagaimana ini akan bekerja untuk saya.
Piedone
3
Saya baru saja mencoba solusi yang Anda usulkan di sini dan ya saya sudah mendapatkan ekstra yang Anda sebutkan dalam registri. Tetap ini tidak mengesampingkan atau mengubah nilai properti saat ini dari database lokal saya. Registri menunjukkan nilai yang diinginkan untuk ketiga lokasi, tetapi dalam SMS masih ada lokasi default dengan instalasi. Menggunakan MS sql server compact 3.5 SP 1 dapat menjadi alasan untuk perilaku seperti itu?
user3840527
2
Ini adalah satu-satunya tempat yang saya sudah bisa menemukan setiap info tentang kesalahan ini. suatu hari nanti, ya, mengubah izin untuk kunci reg tidak membuat kesalahan hilang, tetapi seperti yang user3840527 katakan, SSMS masih memiliki lokasi default asli setelahnya, bahkan setelah keluar & membuka kembali itu.
Yann Duran
@ Piedone, bisakah Anda menjelaskan apa yang Anda lakukan alih-alih menggunakan metode reg key? Atau tunjuk ke suatu tempat yang menjelaskan metode ini? Terima kasih
Yann Duran
1
Kesalahan hilang tetapi lokasi tidak berubah
Adil Mammadov