Saya memiliki SQL Server (2000, 2005 dan 2008) dan saya ingin menggunakan SQL Agent (atau bahkan database cadangan sederhana 'xxx' ke disk = 'yyy'), untuk membuat cadangan ke drive jarak jauh.
Yaitu: saya memiliki drive yang dipetakan di mesin SQL, misalnya: "M:" yang memetakan ke \\ otherbox \ someshare
Secara default SQL Server tidak akan memungkinkan Anda untuk membuat cadangan ke drive seperti itu, tapi saya pikir ada cara untuk mengaktifkannya. Adakah yang bisa mengarahkan saya ke dokumen?
Terima kasih sebelumnya.
sql-server
backup
mappeddrive
Martin Marconcini
sumber
sumber
Jawaban:
Gunakan jalur UNC ketika menentukan tujuan - Agen SQL tidak memiliki konsep "dipetakan" "drive".
Juga, SQL Agent biasanya berjalan sebagai "Layanan Lokal" atau "Sistem Lokal" dan, dengan demikian, tidak memiliki hak untuk berbagi jarak jauh di komputer lain.
Anda memiliki beberapa pilihan:
Jalankan SQL Agent sebagai akun peran di domain. Berikan izin akun itu untuk menulis ke direktori / bagikan di mana Anda ingin cadangan disimpan.
Jalankan SQL Agent sebagai "Layanan Jaringan". Ini akan mengotentikasi ke server berbagi dengan akun komputer domain dari mesin yang menjalankan layanan. Berikan izin akun itu untuk menulis ke direktori / bagikan di mana Anda ingin cadangan disimpan.
Jika Anda tidak memiliki domain, buat akun dengan nama pengguna dan kata sandi yang sama di mesin yang menghosting SQL Agent dan mesin yang menyimpan file cadangan. Ubah SQL Agent untuk dijalankan sebagai akun "peran" ini, dan berikan izin akun itu untuk menulis ke direktori / bagikan di mana Anda ingin cadangan disimpan. ("Domain orang miskin" ...)
sumber
Saya sangat setuju dengan kedua jawaban tentang jalur UNC.
Saya juga ingin menambahkan bahwa bahkan dengan drive yang dipetakan Anda memiliki solusi sederhana. Anda dapat menjalankan cadangan ke semua drive normal server Anda. Dan kemudian Anda bisa menambahkan
Perintah SQL untuk pekerjaan atau skrip SQL yang Anda jalankan.
Dengan xp_cmdshell Anda dapat melakukan lebih banyak lagi - misalnya menjalankan alat baris perintah arsip eksternal, seperti 7z untuk mengompres file sebelum Anda akan menyalinnya ke drive yang dipetakan (ketika koneksi jarak jauh terlalu lambat ...)
PS: Lupa menyebutkan bahwa xp_cmdshell dapat diaktifkan dan dinonaktifkan dengan menggunakan alat Konfigurasi Area Permukaan dan dengan menjalankan sp_configure (dan secara default dinonaktifkan)
sumber
Agen Anda perlu akses ke jaringan yang dibagikan. Mereka tidak perlu dipetakan sebelumnya.
Anda melakukannya seperti ini:
Saya percaya bahwa jika pengguna yang memiliki pekerjaan adalah sysadmin sql, itu berjalan di bawah agen, jika tidak berjalan sebagai pengguna non-sysadmin.
sumber
Jika SQL Server tidak berjalan di bawah akun domain, Anda dapat memetakan drive jaringan untuk akun sqlserver (bukan akun Anda) seperti yang dijelaskan dalam jawaban stackoverflow ini
Pertama, Anda perlu mengaktifkan xp_cmdshell
Kemudian Anda dapat memetakan drive menggunakan:
Akhirnya Anda dapat membuat cadangan ke drive yang dipetakan:
sumber
Perlu diingat di sini bahwa SQL Server sangat tidak toleran terhadap keterlambatan jaringan. Jika terjadi, dan cenderung, cadangan akan gagal. Saya tidak merekomendasikan praktik ini sama sekali untuk lingkungan produksi.
Lebih baik mencadangkan secara lokal lalu salin.
sumber
Cara paling mudah adalah membuat drive .vhd di jaringan berbagi melalui manajemen disk dan menetapkan huruf drive untuk itu. SQL dapat mengakses drive ini tanpa modifikasi apa pun.
Cukup tambahkan skrip diskpart.exe ke penjadwal saat boot untuk melampirkan otomatis saat restart.
contoh pilih file vdisk = "\ {alamat ip / server} {networkshare} {filenamep.vhd}" lampirkan vdisk // ingat huruf drive terakhir yang ditugaskan.
sumber