Bagaimana Menyimpan Pangkalan Data SQL ke Bahagian Rangkaian
Menyediakan pangkalan data SQL secara kerap mestilah. Kami telah membahas cara untuk dengan mudah boleh menyandarkan semua pangkalan data pelayan SQL anda kepada cakera keras tempatan, tetapi ini tidak melindungi terhadap pemacu dan / atau kegagalan sistem. Sebagai lapisan tambahan perlindungan terhadap jenis bencana ini, anda boleh menyalin atau membuat backup anda secara langsung pada bahagian rangkaian.
Backup Locally dan kemudian Copy to Share Network
Cara yang paling disukai dan paling langsung untuk menyelesaikan tugas ini adalah untuk membuat sandaran pangkalan data tempatan dan kemudian menyalin fail sandaran masing-masing ke bahagian rangkaian. Anda boleh melakukan ini dengan membuat skrip batch yang kelihatan seperti ini:
SET LocalFolder = C: Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q "Backup Database MyDB To Disk =" LocalFolder% MyDB.bak ""
XCopy "% LocalFolder% MyDB.bak" "\ 192.168.16.55BackupDatabases" / Z / V
DEL "% LocalFolder% MyDB.bak"
Skrip ini melakukan perkara berikut (line by line):
- Menetapkan pembolehubah ke direktori sandaran SQL setempat.
- Mencipta sandaran SQL MyDB (menggunakan Windows Authentication) ke direktori sandaran SQL setempat.
- Salin fail sandaran tempatan ke bahagian rangkaian.
- Memadamkan fail sandaran tempatan.
Sekali lagi, ini adalah kaedah yang disukai kerana ia berfungsi keluar dari kotak dan kemungkinan kegagalan sandaran adalah minimum sejak sandaran dibuat pada cakera setempat. Walau bagaimanapun, jika anda tidak mempunyai ruang cakera yang cukup untuk menyimpan salinan sandaran tempatan, tindakan ini akan gagal. Dalam acara ini, anda perlu menambah ruang cakera tambahan atau sandaran terus ke bahagian rangkaian.
Backup secara langsung kepada Saham Rangkaian
Biasanya, apabila anda cuba membuat sandaran terus ke bahagian rangkaian menggunakan arahan seperti:
SqlCmd -E -Q "Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""
Anda kemungkinan besar akan mendapat ralat di sepanjang baris:
Msg 3201, Aras 16, Negeri 1, Pelayan JF, Talian 1
Tidak dapat membuka peranti sandaran '\ 192.168.16.55BackupDatabasesMyDB.bak'. Kesalahan sistem pengendalian 5 (Akses ditolak.).
Msg 3013, Aras 16, Negeri 1, Pelayan JF, Talian 1
DATABASE BACKUP sedang menular secara tidak normal.
Kesilapan ini berlaku walaupun pada hakikatnya anda menjalankan perintah sandaran SQL menggunakan Windows Authentication (suis -E) dan akaun Windows sebagai keupayaan untuk mengakses dan menyalin fail ke bahagian melalui Windows Explorer.
Sebab tindakan ini gagal kerana perintah SQL dilaksanakan dalam batas akaun perkhidmatan SQL Server berjalan sebagai. Apabila anda melihat senarai Perkhidmatan di komputer anda, kemungkinan besar anda akan melihat perkhidmatan SQL Server berjalan sebagai (log Log As As) sama ada Sistem Tempatan atau Perkhidmatan Rangkaian yang merupakan akaun sistem yang tidak mempunyai akses rangkaian.
Pada sistem kami sandaran kepada arahan perkongsian rangkaian gagal kerana kami mempunyai perkhidmatan SQL Server berjalan sebagai Sistem Tempatan yang, sekali lagi, tidak dapat mengakses sumber rangkaian.
Untuk membolehkan SQL menyandarkan terus ke bahagian rangkaian, kita perlu menjalankan perkhidmatan SQL Server sebagai akaun setempat yang mempunyai akses kepada sumber rangkaian.
Edit sifat-sifat perkhidmatan SQL Server dan pada tab Log On, atur khidmat untuk dijalankan sebagai akaun ganti yang mempunyai hak akses rangkaian.
Apabila anda mengklik OK, anda akan mendapat segera bahawa tetapan tidak akan berkuatkuasa sehingga perkhidmatan dimulakan semula.
Mulakan semula perkhidmatan.
Senarai perkhidmatan kini harus menunjukkan perkhidmatan SQL Server berjalan sebagai akaun yang anda konfigurasikan.
Sekarang apabila anda menjalankan arahan untuk membuat sandaran terus ke bahagian rangkaian:
SqlCmd -E -Q "Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""
Anda harus melihat mesej berjaya:
Diproses 152 halaman untuk pangkalan data 'MyDB', fail 'MyDB' pada fail 1.
Diproses 2 halaman untuk pangkalan data 'MyDB', fail 'MyDB_log' pada fail 1.
BACKUP DATABASE berjaya memproses 154 halaman dalam 0.503 saat (2.493 MB / sec).
Dengan fail sandaran sekarang dalam direktori bahagian rangkaian:
Pertimbangan Kongsi Rangkaian
Adalah penting untuk diperhatikan bahawa arahan sandaran menjangkakan dapat menyambung terus ke bahagian rangkaian tanpa diminta untuk kelayakan. Akaun yang anda telah mengkonfigurasi perkhidmatan SQL Server untuk dijalankan sepatutnya mempunyai sambungan yang dipercayai dengan bahagian rangkaian di mana kelayakan masing-masing membolehkan akses, jika tidak, ralat seperti ini mungkin berlaku:
Msg 3201, Aras 16, Negeri 1, Pelayan JF, Talian 1
Tidak dapat membuka peranti sandaran '\ 192.168.16.55BackupDatabasesMyDB.bak'. Kesalahan sistem pengendalian 1326 (Kegagalan log masuk: nama pengguna tidak diketahui atau kata laluan buruk.).
Msg 3013, Aras 16, Negeri 1, Pelayan JF, Talian 1
DATABASE BACKUP sedang menular secara tidak normal.
Kesalahan ini menunjukkan bahawa nama pengguna dan kata laluan akaun tidak diterima oleh bahagian rangkaian dan perintah itu gagal.
Satu lagi isu yang perlu diingati ialah sandaran dilakukan secara langsung kepada sumber rangkaian, jadi apa-apa cegukan dalam sambungan rangkaian boleh menyebabkan sandaran anda gagal. Atas sebab ini, anda hanya perlu sandaran ke lokasi rangkaian yang stabil (iaitu mungkin bukan VPN).
Implikasi Keselamatan
Seperti yang dinyatakan sebelum ini, dengan menggunakan kaedah yang anda sandarkan secara tempatan dan kemudian menyalin ke bahagian rangkaian adalah pilihan kerana ia membolehkan anda menjalankan Perkhidmatan SQL sebagai akaun dengan akses sistem tempatan sahaja.
Dengan menjalankan perkhidmatan sebagai akaun alternatif anda membuka pintu kepada isu keselamatan yang berpotensi. Sebagai contoh, skrip SQL berbahaya boleh dilaksanakan di bawah akaun ganti dan menyerang sumber rangkaian. Di samping itu, sebarang perubahan pada akaun masing-masing (perubahan kata laluan / tamat tempoh atau penghapusan / penolakan akaun) akan menyebabkan perkhidmatan SQL Server gagal dimulakan.
Adalah penting untuk menyimpan perkara ini jika anda menjalankan contoh SQL Server anda menggunakan akaun ganti. Walaupun ini tidak menunjukkan penghalang sekiranya langkah berjaga-jaga yang betul diambil, anda perlu mempertimbangkan untuk menambah ruang cakera keras tambahan dan kemudian melaksanakan sandaran dan salinan tempatan supaya anda dapat menjalankan perkhidmatan SQL menggunakan akaun setempat.