Saya membuat database pada mesin lokal saya dan kemudian melakukan backup yang disebut tables.bak
table DataLabTables
.
Saya memindahkan cadangan itu ke mesin jarak jauh tanpa tabel itu dan mencoba melakukan pemulihan tetapi mendapatkan kesalahan berikut:
System.Data.SqlClient.SqlError: Sistem operasi mengembalikan kesalahan '5 (Akses ditolak.)' Ketika mencoba 'RestoreContainer :: ValidateTargetForCreation' on 'c: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables .mdf '.
Bagaimana cara memperbaiki hak saya, jika itu masalahnya?
Dari pesan kesalahan, dikatakan ada kesalahan saat memvalidasi target (
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf
) dari operasi pemulihan Anda.Kedengarannya seperti:
a) file itu sudah ada (karena Anda sudah memulihkannya sebelumnya) dan sedang digunakan oleh SQL Server
atau
b) direktori itu tidak ada sama sekali
Dalam pertanyaan Anda, Anda menyebutkan bahwa Anda membuat cadangan untuk tabel itu - itu bukan cara kerja cadangan SQL Server. Cadangan tersebut selalu merupakan keseluruhan basis data (atau setidaknya satu atau beberapa grup grup dari basis data itu).
Firasat saya adalah: Anda telah memulihkan basis data sebelumnya, dan sekarang, setelah pemulihan kedua, Anda tidak mencentang kotak "Timpa basis data yang ada" di wisaya pengembalian Anda - dengan demikian file yang ada tidak dapat ditimpa dan pemulihan gagal.
Pengguna yang menjalankan pemulihan di server jauh Anda jelas tidak memiliki akses ke direktori itu di server jauh.C:\program files\....
adalah direktori yang dilindungi - pengguna normal (non-admin) tidak memiliki akses ke direktori ini (dan subdirektori).Solusi termudah: coba letakkan file BAK Anda di tempat lain (mis.C:\temp
) Dan pulihkan dari sanasumber
RESTORE
perintah standar gagal jika file ada, bahkan jika itu tidak digunakan oleh SQL Server (misalnya MDF / File LDF tetap ada setelah pelepasan sebelumnya). Saya menemukan ini dalam implementasi log-pengiriman berbasis T-SQL kustom untuk migrasi besar dari ratusan DB selama beberapa minggu terakhir. Saya tidak yakin pesan kesalahan "akses ditolak", mungkin sesuatu yang kurang spesifik.Saya mengalami masalah yang sama. Ternyata saya
SQL Server
danSQL Server Agent
layananlogon as
berjalan di bawahNetwork Services
akun yang tidak memiliki akses tulis untuk melakukan pemulihan cadangan.Saya mengubah kedua layanan ini untuk masuk sebagai
Local System Account
dan ini memperbaiki masalah.sumber
Baru-baru ini saya menghadapi masalah ini dengan SQL 2008 R2 dan solusi di bawah ini bekerja untuk saya:
1) Buat database baru dengan nama yang sama dengan yang Anda coba kembalikan 2) Saat memulihkan, gunakan nama yang sama yang Anda gunakan di atas dan dalam opsi, klik opsi menimpa
Anda mungkin mencoba di atas jika solusi lain tidak berhasil.
sumber
Sumber
sumber
Saya punya masalah serupa. Saya mencoba mengembalikan file .bak 2005, dan saya menerima kesalahan yang persis sama. Saya memilih opsi menimpa juga tidak berhasil.
solusi saya adalah memberikan akses pengguna SQL ke direktori yang dimaksud, dengan pergi ke folder dan mengedit hak akses melalui layar properti.
sumber
kehilangan beberapa jam untuk masalah ini juga. berhasil meskipun:
"Akses ditolak" dalam kasus saya benar-benar berarti "akses ditolak". Akun pengguna mssqlstudio pada perangkat windows saya TIDAK memiliki kendali penuh atas folder yang ditentukan dalam pesan kesalahan. Saya memberinya kendali penuh. akses tidak lagi ditolak dan pemulihan berhasil.
mengapa folder itu dikunci untuk studio? siapa tahu ? Saya punya cukup banyak pertanyaan untuk ditangani karena tanpa mencoba menjawab lebih banyak.
sumber
Saya punya masalah ini, saya login sebagai administrator dan itu memperbaiki masalah.
sumber
Skenario lain bisa jadi adalah adanya beberapa jalur basis data. Pertama, catat jalur tempat database baru saat ini disimpan. Jadi, jika Anda membuat database kosong baru dan kemudian melakukannya
Tasks/Restore
, pastikan jalur yang coba dipulihkan adalah direktori yang sama dengan tempat database kosong dibuat. Bahkan jika jalur pemulihan itu legal, Anda masih akan mendapatkan akses ditolak kesalahan jika itu bukan jalur saat ini yang sedang Anda kerjakan. Sangat mudah dikenali ketika jalur tidak legal, jauh lebih sulit dikenali ketika jalur itu legal, tetapi tidak jalur saat ini.sumber
Maaf karena saya tidak bisa berkomentar ...
Saya memiliki masalah yang sama. Dalam kasus saya masalahnya terkait dengan mencoba mengembalikan di folder server sql lama (yang ada di server). Ini karena cadangan server sql lama (yaitu SQL Server 2012 Backup) yang dikembalikan ke server sql baru (SQL Server 2014). Masalah sebenarnya tidak terlalu berbeda dari jawaban @marc_s. Lagi pula, saya hanya mengubah folder target ke folder DATA SQL Server baru.
sumber
Ini mungkin bukan solusi terbaik, tapi saya mencoba melakukan pemulihan di SQL Server 2005, tapi saya berubah menjadi SQL Server 2008 dan berhasil.
sumber
Punya masalah seperti ini. Kesalahan yang disebabkan oleh kompresi yang diaktifkan pada folder SQL Server.
sumber
Frnds ... Saya memiliki masalah yang sama ketika memperbaiki basis data dan mencoba setiap solusi tetapi tidak dapat diselesaikan. Kemudian saya mencoba menginstal ulang SQL 2005 dan masalah terpecahkan. Terakhir kali saya lupa untuk memeriksa opsi penyesuaian ketika menginstal SQL .. Ini muncul dua kali saat menginstal dan saya memeriksa hanya untuk itu ..
sumber
Dalam kasus saya - saya harus memeriksa jalur Backup dari database dari tempat saya memulihkan. Saya sebelumnya telah memulihkannya dari jalur yang berbeda ketika saya melakukannya pertama kali. Saya memperbaiki jalur Cadangan untuk menggunakan jalur cadangan yang saya gunakan pertama kali dan berhasil!
sumber
Saya akhirnya membuat folder baru untuk Data dan Log dan itu berfungsi dengan baik, pasti masalah izin folder / file.
sumber
Ini juga terjadi jika jalur benar, tetapi akun layanan bukan pemilik file data (namun masih memiliki hak yang cukup untuk akses baca / tulis). Ini dapat terjadi jika izin untuk file diatur ulang agar sesuai dengan izin folder (tentu saja, ketika layanan dihentikan).
Solusi termudah dalam hal ini adalah melepaskan setiap basis data dan melampirkannya kembali (karena ketika melampirkan pemilik diubah menjadi akun layanan).
sumber
Coba ini:
Di jendela Restore DB wizard, pergi ke tab File, Hapus centang "Relokasi Semua file ke folder" kotak centang kemudian ubah tujuan mengembalikan dari C: ke beberapa drive lain. Kemudian lanjutkan dengan proses pemulihan reguler. Ini akan berhasil dipulihkan.
sumber
Saya memiliki masalah yang sama tetapi saya menggunakan sql server 2008 r2, Anda harus memeriksa opsi dan memverifikasi jalur di mana sql akan menyimpan file .mdf dan .ldf Anda harus memilih jalur instalasi server sql Anda. Saya memecahkan masalah saya dengan ini, saya harap ini membantu Anda.
sumber
Kemudian cobalah memindahkannya ke sub folder di bawah C :, tetapi verifikasi bahwa pengguna memiliki hak penuh pada folder yang Anda gunakan.
sumber