Saya perlu menyalin database dari server jauh ke yang lokal. Saya mencoba menggunakan SQL Server Management Studio, tetapi hanya mencadangkan ke drive di server jauh.
Beberapa poin:
- Saya tidak memiliki akses ke server jauh dengan cara yang saya bisa menyalin file;
- Saya tidak memiliki akses untuk mengatur jalur UNC ke server saya;
Ada ide bagaimana saya bisa menyalin database ini? Apakah saya harus menggunakan alat pihak ke-3?
sql
sql-server
backup
Fernando
sumber
sumber
Generate and Publish Scripts
opsi. Saya mendapatkan semua tabel dan skema. Tapi saya tidak mendapatkan data dengan tabel. Bagaimana saya bisa memperbaikinya?Jawaban:
Di Microsoft SQL Server Management Studio Anda dapat mengklik kanan pada database yang ingin Anda backup dan klik Tugas -> Hasilkan Script.
Pops ini membuka wizard di mana Anda dapat mengatur yang berikut untuk melakukan backup yang layak dari database Anda, bahkan pada server jauh :
Setelah selesai, Anda akan memiliki skrip cadangan di depan Anda. Buat database lokal baru (atau jarak jauh), dan ubah pernyataan 'USE' pertama dalam skrip untuk menggunakan database baru Anda. Simpan skrip di tempat yang aman, dan lanjutkan dan jalankan melawan database kosong baru Anda. Ini akan membuat Anda menjadi (hampir) duplikat database lokal yang kemudian dapat Anda backup sesuai keinginan.
Jika Anda memiliki akses penuh ke basis data jauh, Anda dapat memilih untuk memeriksa 'skrip semua objek' di jendela pertama wizard dan kemudian ubah opsi 'Database Skrip' ke True di jendela berikutnya. Berhati-hatilah, Anda harus melakukan pencarian penuh & mengganti nama database dalam skrip ke database baru yang dalam hal ini Anda tidak perlu membuat sebelum menjalankan skrip. Ini harus membuat duplikat yang lebih akurat tetapi kadang-kadang tidak tersedia karena pembatasan izin.
sumber
Pertama, berikan izin kontrol penuh ke jalur lokal di mesin Anda (seperti yang ditunjukkan di bawah) dengan Semua Orang. (Atau sebagai alternatif memberikan izin khusus ke akun SQL Server Agent).
Kedua, jalankan yang berikut:
sumber
Untuk menyalin data dan skema saja (tidak akan menyalin prosedur tersimpan, fungsi, dll.), Gunakan SQL Server Import and Export Wizard, dan pilih New ... ketika memilih database tujuan.
Klik kanan Database> Tugas> Impor Data.
Pilih Sumber Data
Pilih Tujuan
New...
Sisanya lurus ke depan.
sumber
Anda tidak dapat membuat cadangan dari server jarak jauh ke disk lokal - tidak ada cara untuk melakukan ini. Dan tidak ada alat pihak ketiga untuk melakukan ini, sejauh yang saya tahu.
Yang dapat Anda lakukan adalah membuat cadangan di mesin server jarak jauh, dan minta seseorang untuk mengirimkannya dan mengirimkannya kepada Anda.
sumber
Saya tahu ini adalah jawaban yang terlambat tetapi saya harus membuat komentar tentang jawaban yang paling banyak dipilih yang mengatakan untuk menggunakan opsi menghasilkan skrip di SSMS.
Masalahnya adalah opsi ini tidak selalu menghasilkan skrip dalam urutan eksekusi yang benar karena tidak memperhitungkan dependensi.
Untuk database kecil ini bukan masalah tetapi untuk yang lebih besar itu tentu karena diperlukan untuk memesan ulang skrip secara manual. Coba itu pada 500 objek database;)
Sayangnya dalam hal ini satu-satunya solusi adalah alat pihak ketiga.
Saya berhasil menggunakan alat perbandingan dari ApexSQL (Diff dan Data Diff) untuk tugas yang serupa tetapi Anda tidak dapat salah dengan yang lain yang telah disebutkan di sini, terutama Gerbang Merah.
sumber
Anda dapat mencoba SQLBackupAndFTP . Ini akan membuat skrip untuk membuat semua objek dalam database Anda dan pernyataan INSERT untuk semua baris dalam tabel Anda. Di basis data apa pun Anda dapat menjalankan file skrip ini dan seluruh basis data akan dibuat ulang.
sumber
Lihatlah blog ini untuk deskripsi cara menyalin basis data jauh:
Cadangkan Database SQL Server 2008 Dari Lingkungan Hosting Bersama
sumber
Ada solusi 99% untuk mendapatkan file bak dari server sql jarak jauh ke komputer lokal Anda. Saya menggambarkannya di pos saya di http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc
Secara umum akan terlihat seperti ini:
jalankan skrip sql untuk menghasilkan file bak
jalankan skrip sql untuk memasukkan setiap file bak ke tabel temp dengan jenis bidang varbinary dan pilih baris ini dan unduh data
ulangi sebelumnya. langkah sebanyak yang Anda punya file bak
jalankan skrip sql untuk menghapus semua sumber daya sementara
itu saja, Anda memiliki file bak Anda di pc lokal Anda.
sumber
Anda dapat menggunakan Salin basis data ... klik kanan pada basis data jauh ... pilih tugas dan gunakan salin basis data ... ini akan menanyakan tentang server sumber dan server tujuan. bahwa sumber Anda adalah remote dan tujuan adalah instance lokal Anda dari sql server.
semudah itu
sumber
Geng AppHarbor telah berjuang dengan ini dan telah mengembangkan solusi sementara menggunakan objek manajemen server SQL dan SqlBulkCopy.
Lihat posting blog mereka tentang hal itu, atau langsung ke kode .
Mereka hanya mengujinya dengan AppHarbor tetapi mungkin perlu dicoba.
sumber
Jawaban di atas tidak benar. SQL Script bahkan dengan data bukan cadangan. Cadangan adalah file BAK yang berisi basis data lengkap dalam strukturnya saat ini termasuk indizes.
Tentu saja file BAK yang berisi cadangan lengkap dengan semua data dan indikasi dari basis data SQL Server jarak jauh dapat diambil pada sistem lokal.
Ini dapat dilakukan dengan perangkat lunak komersial, untuk secara langsung menyimpan file BAK cadangan ke mesin lokal Anda, misalnya Yang ini secara langsung akan membuat cadangan dari db SQL jarak jauh pada mesin lokal Anda.
sumber
Seperti yang dikatakan Martin Smith, jika Anda tidak memiliki akses ke mesin atau sistem file, Anda harus menggunakan alat pihak ketiga, seperti Red Gate atau Adept untuk melakukan perbandingan pada sistem sumber dan tujuan. Alat Gerbang Merah akan memungkinkan Anda untuk menyalin objek dan skema DAN data.
sumber
yone cara Anda bisa mengambil cadangan dari instance SQL Server jarak jauh ke drive lokal Anda, mengingat kondisi berikut terpenuhi:
Sekarang saat menentukan perintah cadangan, gunakan jalur folder bersama saat menentukan opsi disk.
sumber
coba saja yang ini:
1) Bagikan folder dengan izin penuh di komputer Anda
2) di server SQL Anda: panel kontrol -> alat administrasi -> layanan -> klik kanan pada semua layanan SQL
pada log masuk tab harus dimulai dengan administrator domain Anda
3) di wizard pemeliharaan sql server tempat cadangan lokasi dan folder (\ yourcomputername \ sharedfoldernam)
Saya melakukan backup jarak jauh pada 8 server sql server 2008 di perusahaan kami
sumber
Saya heran bahwa tidak ada yang menyebutkan solusi cadangan yang ditawarkan oleh Ola Hallengren yang benar - benar melakukannya memungkinkan Anda untuk membuat cadangan DB dari server jarak jauh ke jalur UNC di jaringan Anda secara gratis (saya sebenarnya menggunakannya saat saya mengetik untuk mencadangkan DB dari server dev yang saya tidak memiliki akses jarak jauh selain melalui SSMS ke share di PC dev saya). Ini telah tersedia sejak 2008 dan bekerja pada SQL Server 2005 hingga 2014.
Anda perlu memastikan bahwa bagian yang Anda setel memiliki akses yang cukup: Saya cenderung mengizinkan baca / tulis penuh ke grup AD 'Semua Orang' selama durasi proses pencadangan karena saya terlalu malas untuk mencari tahu sesuatu yang lebih membatasi tapi itu pilihan pribadi.
Ini digunakan dengan baik, didokumentasikan dengan baik dan sangat fleksibel. Saya cenderung untuk meletakkan procs dan tabel logging di database utilitas kecil mereka sendiri dan kemudian jalankan. Asalkan semuanya ada dalam domain AD Anda dan tidak jauh dalam arti bahwa itu keluar pada server yang terletak bersama atau sesuatu, ini bekerja dengan sangat baik.
Permintaan maaf karena menambahkan ke utas yang sangat lama tetapi saya menemukan ini ketika mencari sesuatu yang lain dan menganggapnya sebagai tambahan yang berharga bagi siapa pun yang mencari topik ini.
sumber
Untuk 2019, saya akan merekomendasikan menggunakan mssql-scripter jika Anda menginginkan cadangan lokal yang sebenarnya. Ya itu skrip tetapi Anda dapat menyesuaikannya untuk memasukkan apa pun yang Anda inginkan, yang dapat mencakup semua data. Saya menulis skrip bash untuk melakukan backup harian otomatis menggunakan ini pada mesin linux. Lihat intisari saya:
sumber
Saya bisa melakukannya sekali ... Untuk melakukan ini, Anda harus memiliki saham dibuka di server jauh. maka Anda dapat langsung menempatkan cadangan pada share itu sendiri, daripada lokasi default ...
Biasanya admin mengambil cadangan dan membagikannya kepada kami di beberapa folder bersama. Saya mencoba jika itu akan berhasil jika saya menempatkan cadangan di sana. Itu berhasil.
sumber
Jika Anda menggunakan Generate Script di bawah SSMS, klik tombol Advanced. Di bawah opsi 'Hasilkan Script untuk objek dependen', klik Benar. Dengan mengklik bahwa setiap dependensi dari setiap objek juga akan dihapus dengan urutan yang benar.
sumber
Beberapa program cadangan pihak ketiga memungkinkan pengaturan transfer file dengan izin jaringan tertentu. Ini sangat berguna ketika layanan SQL Server berjalan di bawah akun terbatas dan tidak memiliki izin jaringan yang cukup. Coba gunakan EMS SQL Backup yang menyelesaikan tugas ini.
sumber
saya menggunakan alat cadangan Redgate pro 7 untuk tujuan ini. Anda dapat membuat mirror dari file cadangan di buat ubin di lokasi lain. dan dapat menyalin file cadangan setelah dibuat di jaringan dan di penyimpanan host secara otomatis.
sumber
Buat folder bersama lokal, dengan hak istimewa "baca semua orang"
Hubungkan ke database target, mulai cadangan dan arahkan ke bagikan seperti di bawah ini
\ mymachine \ shared_folder \ mybackup.bak
(Mencoba di lingkungan domain Windows)
sumber
Saya tahu ini adalah posting yang lebih lama, tetapi untuk apa nilainya, saya telah menemukan bahwa solusi "paling sederhana" adalah dengan mengklik kanan pada database, dan pilih "Tugas" -> "Ekspor Aplikasi Data-tier". Mungkin saja opsi ini hanya tersedia karena server dihosting di Azure (dari yang saya ingat pernah bekerja dengan Azure di masa lalu, format .bacpac cukup umum di sana).
Setelah selesai, Anda dapat mengklik kanan daftar "Databases" server lokal Anda, dan menggunakan "Impor Aplikasi Data-tier" untuk mendapatkan data ke mesin lokal Anda menggunakan file .bacpac.
Perlu diingat ekspor bisa memakan waktu lama . Butuh sekitar dua jam bagi saya untuk menyelesaikan ekspor. Impor bagian jauh lebih cepat.
sumber
Jika Anda berada di jaringan lokal, Anda dapat membagikan folder di mesin lokal Anda dan menggunakannya sebagai folder tujuan untuk cadangan.
Contoh:
Folder lokal:
C:\MySharedFolder -> URL: \\MyMachine\MySharedFolder
Remote SQL Server:
Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\\MyMachine\MySharedFolder'
sumber