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\Instances
meskipun ketika menginstal SQL Server Express dengan Layanan Lanjutan Saya menentukan folder DATA di lokasi lain - di mana hanya .mdf
file SQL Server Express standar disimpan, tetapi tidak LocalDB
instance) 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.
Jawaban:
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
sumber