Tidak dapat membuka perangkat cadangan. Kesalahan Sistem Operasi 5

143

Di bawah ini adalah kueri yang saya gunakan untuk membuat cadangan (membuat .bak) database saya.

Namun, setiap kali saya menjalankannya, saya selalu mendapatkan pesan kesalahan ini:

MSG 3201, Level 16,
Status 1, Baris 1 Tidak dapat membuka perangkat cadangan 'C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak'. Kesalahan sistem operasi 5 (Akses ditolak.).

Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE berhenti secara tidak normal.

Ini pertanyaan saya:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Smiley
sumber
Nah, pesan kesalahannya cukup jelas, bukan? Sebagai pengguna apa program ini dijalankan? Apakah file bak ada? Bisakah Anda mengaksesnya secara manual?
Pekka
1
Haruskah kami menganggap ini untuk SQL Server dari jalur file, karena Anda tidak meletakkan produk di tag atau judul?
Powerlord
Saya dapat menjalankan kueri ini sebelum saya memformat ulang laptop saya jika itu membantu. Ini adalah SQL Server 2008 dan saya menjalankan sebagai administrator. File bak tidak ada karena saya sedang dalam proses membuatnya dengan kueri ini.
Smiley
@Smiley Face: Anda harus membaca file SQL melalui jaringan lokal, bukan jaringan. Jadi itu berarti Anda harus memindahkan file SQL dari jaringan ke drive lokal Anda terlebih dahulu, dan memulihkannya.
mrjimoy_05
sqlbak.com/blog/…
Shiwangini

Jawaban:

238

Ya saya baru saja mencetak yang ini.

Lihat di Layanan Windows. Mulai> Administrasi> Layanan

Temukan Layanan dalam daftar yang disebut: SQL Server (MSSQLSERVER) cari kolom "Log On As" (perlu menambahkannya jika tidak ada dalam daftar).

Ini adalah akun yang Anda butuhkan untuk memberikan izin ke direktori, klik kanan di explorer> properti> Berbagi (Dan Keamanan)

CATATAN : Ingatlah untuk memberikan izin ke direktori aktual DAN untuk berbagi jika Anda menggunakan jaringan.

Terapkan dan tunggu izin untuk menyebar, coba cadangan lagi.

CATATAN 2 : jika Anda membuat cadangan di seluruh jaringan dan SQL Anda berjalan sebagai "Layanan Lokal" maka Anda berada dalam masalah ... Anda dapat mencoba memberikan izin atau mungkin lebih mudah untuk membuat cadangan secara lokal dan menyalin di luar SQL Server ( satu jam kemudian).

CATATAN 3 : Jika Anda menjalankan sebagai layanan jaringan maka KADANG mesin remote tidak akan mengenali layanan jaringan di SQL Server Anda. Jika ini kasusnya, Anda perlu menambahkan izin untuk komputer itu sendiri, misalnya. MyServer $.

Robin Vessey
sumber
22
Izin / tambah / lanjutan tidak menemukan pengguna dalam daftar, tetapi saya menempel di "NT Service \ MSSQLSERVER" dan bekerja seperti juara.
Tandai A
3
Apakah menambahkan izin 'semua orang' ke folder menutupi ini?
DevDave
3
Tergantung, jika itu benar-benar publik yang tidak diautentikasi maka ya. Jika ini adalah "sembarang dikonfirmasi" maka LAYANAN LOKAL pada mesin jarak jauh biasanya tidak akan memenuhi syarat ... tetapi apakah Anda benar-benar ingin memberikan akses kepada semua orang, bagi kami itu adalah pelanggaran yang hampir bisa dipecat.
Robin Vessey
1
Tidak berhasil untuk saya, dan saya hanya mencadangkan ke C: \ temp \. Layar Izin Folder tidak akan mengenali Logon yang digunakan oleh layanan, NT Service \ MSSQLSERVER , bahkan saat menempelkan seperti yang disarankan @Mark A. Apakah ada akun alternatif yang baik untuk menggunakan layanan itu?
MGOwen
8
Bekerja untuk saya, solusi hebat! Saya menggunakan SQL Server Express 2014 jadi Anda harus memberikan izin menulis ke 'NT Service \ MSSQL $ SQLEXPRESS'.
mikhail-t
11

Buka folder server SQL di menu mulai dan klik alat konfigurasi Pilih manajer konfigurasi SQL Server Pada layanan server SQL, pada contoh yang diinginkan, ubah (Masuk sebagai) ke sistem lokal

Abuleen
sumber
6

Akun layanan SQL Server tidak memiliki izin untuk menulis ke folder C:\Users\Kimpoy\Desktop\Backup\

Martin Smith
sumber
22
bagaimana cara memberikan izin akun layanan SQL Server untuk mengakses folder ini? :)
Smiley
6

Saya juga mengalami masalah ini baru-baru ini, namun saya menjalankan pekerjaan cadangan dari server A tetapi database yang dicadangkan ada di server B ke berbagi file di server C. Saat agen di server A memberi tahu server B untuk menjalankan cadangan t -sql, sebenarnya akun layanan yang menjalankan sql di SERVER B yang mencoba menulis cadangan ke server C.

Ingat saja, akun layanan dari sql server yang melakukan perintah BACKUP DATABASE yang sebenarnya adalah yang membutuhkan hak istimewa pada sistem file, bukan agennya.

Jason
sumber
4

Saya baru saja melalui ini sendiri. Saya telah memastikan bahwa pengguna login MSSQLSERVER saya memilikinya full accesstetapi masih menyebabkan masalah. Ini hanya bekerja setelah saya memindahkan tujuan ke root C. Lebih penting lagi dari folder pengguna (meskipun saya memiliki bagian dengan izin penuh - bahkan mencoba "Semua" sebagai tes).

Saya tidak tahu apakah saya menganggap masalah saya "diperbaiki", namun masalah itu "berfungsi".

Hanya FYI untuk pengguna lain yang menemukan utas ini.

DNK
sumber
1
Saya pikir ini disebabkan oleh domain perusahaan yang memiliki jalur pengguna yang berada di drive jaringan sehingga dapat diakses oleh pengguna secara transparan terlepas dari mesin yang mereka masuki. Seperti situasi ini: superuser.com/a/730519
Bon
@Bon Terima kasih! Ini menyelesaikan masalah bagi saya. Jalur tempat saya memiliki file cadangan sebenarnya adalah jalur jaringan.
JonM
4

Saya menghadapi masalah yang sama dengan SQL Express 2014 SP1 di Windows 10.

Solusi yang berhasil

  1. Buka Layanan dengan mengetik Layanan
  2. Cari dan buka SQL Server (SQLExpress)
  3. Buka Tab LogOn
  4. Pilih Akun Sistem Lokal (Juga Periksa Izinkan Layanan untuk berinteraksi dengan desktop)
  5. Klik OK. Hentikan layanan. Mulai ulang layanan.
  6. Masalah terpecahkan
Sawarkar Vikas
sumber
3

Untuk mengetahui pengguna mana yang perlu Anda beri izin untuk melakukan proses pemulihan, Anda dapat mengikuti langkah-langkah berikut:

Anda harus pergi ke server Anda tempat SQL Server diinstal. Temukan Manajer Konfigurasi Server SQL

masukkan deskripsi gambar di sini

Selanjutnya, Anda perlu membuka "SQL Server Services"

masukkan deskripsi gambar di sini

Di bawah contoh SQL Server (MSSQLSERVER) Anda akan ada akun dengan kolom "Logon As", dalam kasus saya adalah NT Service \ MSSQLSERVER .

Itu adalah akun yang perlu Anda tambahkan di bawah tab Keamanan di lokasi .bak sumber Anda dan berikan izin "Baca" kepada pengguna tersebut agar file cadangan dapat dibaca.

Misalkan file backup Anda ada di folder "D: \ Shared", maka Anda perlu memberikan izin seperti ini:

masukkan deskripsi gambar di sini

Raghav
sumber
2

Saya memiliki masalah serupa. Saya menambahkan izin menulis ke file .bak itu sendiri, dan folder saya tempat saya menulis cadangan untuk pengguna LAYANAN JARINGAN. Untuk menambahkan izin, cukup klik kanan file / direktori apa yang ingin Anda ubah, pilih tab keamanan, dan tambahkan pengguna / izin yang sesuai di sana.

Eric Bernier
sumber
1
apa yang kamu maksud dengan pantas?
Steam
2

Inilah yang saya lakukan untuk melewati masalah ini.

1) Buka cadangan

2) Hapus jalur file tujuan ke disk

3) Klik Add

4) Pada kotak File name: centang secara manual ketik nama backup setelah .. \ backup seperti di bawah ini dimana Yourdb.bak adalah nama backup database

C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ Yourdb.bak

5) Klik OK

Semoga ini membantu!

dpen82.dll
sumber
2

Salah satu alasan mengapa ini terjadi adalah Anda menjalankan Layanan MSSQLSERVER Anda tidak menggunakan sistem lokal. Untuk memperbaiki masalah ini, gunakan langkah-langkah berikut.

  1. Buka proses menggunakan Windows + R
  2. Ketik services.msc dan dialog layanan akan terbuka
  3. Temukan SQL Server (MSSQLSERVER)
  4. Klik kanan dan klik pada properti.
  5. Buka tab Masuk
  6. Pilih akun Sistem Lokal dan klik "Terapkan" dan "OK"
  7. Klik pada tautan Berhenti di panel kiri dengan memilih "SQL Server (MSSQLSERVER)" dan Mulai lagi setelah sepenuhnya berhenti.
  8. Selamat menikmati cadangan Anda.

Semoga ini membantu Anda dengan baik, seperti yang terjadi pada saya. Bersulang!

Gaurav Amatya
sumber
1

Saya tahu ini bukan solusi yang tepat tetapi menggunakan jalur drive eksternal memecahkan masalah ini.

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Cem Mutlu
sumber
1

SQL Server tidak dapat mengakses (menulis) cadangan ke lokasi yang ditentukan.

Pertama, Anda perlu memverifikasi akun layanan yang menjalankan server Sql. Ini dapat dilakukan dengan menggunakan Manajer konfigurasi atau Services.msc.

atau

Gunakan kueri di bawah ini:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

Sekarang lihat kolom service_account dan catat.

Buka lokasi tempat Anda mencoba untuk mengambil cadangan, dalam kasus Anda: C: \ Users \ Me \ Desktop \ Backup

Klik kanan -> Properties -> Security ->

Tambahkan akun layanan dan berikan izin baca / tulis. Ini akan menyelesaikan masalah.

Ramakant Dadhichi
sumber
0

MSG 3201, Level 16, Status 1, Baris 1 Tidak dapat membuka perangkat cadangan 'C: \ Backup \ Adventure_20120720_1024AM.trn'. Kesalahan sistem operasi 5 (Akses ditolak.). Msg 3013, Level 16, State 1, Line 1 BACKUP LOG berhenti secara tidak normal.

Saya memverifikasi folder cadangan di drive C, Apakah akun layanan baru memiliki izin akses kontrol penuh atau tidak ?, saya menyadari bahwa akun layanan "Uji \ Kiran" tidak memiliki izin keamanan kontrol penuh.

Ikuti langkah-langkah di bawah ini untuk memberikan kontrol penuh ke akun layanan:

  1. Pergi ke drive C, klik kanan pada folder Backup.
  2. Pilih tab Keamanan.
  3. Klik tombol Edit, jendela baru akan terbuka.
  4. Klik tombol Add dan masukkan akun pengguna Test \ Kiran dan klik tombol centang nama, ini akan memvalidasi pengguna yang Anda masukkan ada atau tidak, jika sudah ada akan menampilkan pengguna di jendela, pilih OK.
  5. Pilih Anda memasukkan nama pengguna dan pilih kotak centang Kontrol Penuh di bawah memungkinkan.
pengguna2459051
sumber
0

Silakan periksa akses ke drive. Pertama buat satu folder dan buka properti folder,

Anda dapat menemukan tab keamanan, klik di situ periksa apakah id pengguna Anda memiliki akses atau tidak.

Jika tidak dapat menemukan id Anda, silakan klik add buttion dan beri nama pengguna dengan akses penuh.

pengguna2703575
sumber
0

Bagikan folder ini dan gunakan jalur UNC, dengan contoh: \ pc \ backups \ mydb.bak

Kemudian Anda dapat berhenti berbagi.

Tidak terlalu elegan, tetapi ini menyelesaikan semua masalah perizinan (Anda perlu memberikan izin untuk berbagi juga, seperti yang disebutkan di atas)

Gennady G
sumber
0

Saya mengalami masalah ini ketika file .BAK disimpan sementara di folder yang dienkripsi dengan BitLocker. Itu mempertahankan enkripsi setelah dipindahkan ke folder lain.

Akun LAYANAN JARINGAN tidak dapat mendekripsi file dan memberikan pesan kesalahan yang sangat informatif ini.

Menghapus enkripsi BitLocker (dengan menghapus centang "Enkripsi konten untuk mengamankan data" di properti file) pada file .BAK menyelesaikan masalah.

Eric J.
sumber
0

Saya mempunyai kesalahan yang sama. Perubahan berikut membantu saya memperbaiki ini.

Saya harus memeriksa Manajer Server-> Alat-> Layanan dan menemukan pengguna (kolom "Log On As") untuk layanan: SQL Server (SQLEXPRESS).

Saya pergi ke folder lokal (C: \ Users \ Me \ Desktop \ Backup) dan menambahkan "NT Service \ MSSQL $ SQLEXPRESS" sebagai pengguna untuk memberikan izin menulis.

Hiren Parghi
sumber
0

Hai, Anda perlu mengubah kueri dari:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

untuk

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

Anda harus menambahkan N di depan jalan yang berfungsi untuk saya.

Robert Peter Bronstein
sumber
0

Dalam kasus saya, saya lupa memberi nama file cadangan dan itu terus memberi saya kesalahan izin yang sama: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
Tuan Brigante
sumber
0

Saya memecahkan masalah yang sama dengan 3 langkah berikut:

  1. Saya menyimpan file cadangan saya di jalur folder lain yang berfungsi dengan benar.
  2. Lihat tab keamanan yang berbeda dua folder (seperti gambar di bawah ini).
  3. Izin edit di folder tab keamanan yang tidak berfungsi dengan benar.

masukkan deskripsi gambar di sini

Mohsen Najafzadeh
sumber