Apa cara paling efektif untuk menduplikasi contoh di SQL 2008?


14

Kami punya contoh basis data sederhana dengan data yang cukup di basis data agar tetap berguna, dan kita bisa menggunakannya untuk tujuan demonstrasi, dan saya ingin meletakkan salinannya di laptop saya sehingga saya bisa menggunakannya untuk pekerjaan dev ketika Saya tidak di kantor. (Instance database dev biasa sekitar 150GB, instance yang ini adalah 3GB)

Apa metode yang paling bisa diulang / skrip untuk membuat ulang instance di laptop saya? Saya yakin saya harus menjalankan lagi installer untuk SqlServer2008, dan membuat contoh, tapi setelah itu ... Saya pikir saya ingin bisa drop database lama saya setiap bulan atau lebih dan salin semua barang baru ke laptop saya, karena instance saya tidak akan berubah baik pada sistem satu demo atau laptop. Tetapi database itu sendiri akan diperbarui, dengan menyegarkan pada sprocs dan sejenisnya.

Saya telah mempertimbangkan untuk menulis semua "drop database-files; add database-files {path}" dan menyimpannya dalam file batch yang bisa dijalankan, dan kemudian saya bisa "drop, delete, copy, add" tetapi bertanya-tanya apakah ada Apakah cara yang lebih baik dari sekadar xcopy dan batch?

Saya mencoba melakukan ini dengan murah (bukankah kita selalu mencoba dan melakukan hal-hal dengan murah) jadi saya tidak terlalu tertarik dengan produk RedGate atau sejenisnya. Saya ingin sesuatu yang dapat saya pertahankan dengan mudah di editor teks untuk saya sendiri.


apakah database tunggal atau contoh sql server dengan lebih dari satu database? Saya berasumsi Anda memiliki sql server yang diinstal di laptop dan mesin pengembangan Anda dan Anda memiliki satu database, dalam hal ini Anda dapat menggunakan cadangan dan memulihkan. Mesin pengembangan cadangan db, salin ke laptop dan kembalikan, sebaliknya ... apakah itu masuk akal?
CoderHawk

apakah itu SQL Server Express Edition? atau Standar? SSIS adalah pilihan yang baik untuk skenario seperti ini, sayangnya tidak tersedia dalam edisi Express dan Web.
CoderHawk

Maaf @Sandy ~ Ini SQL Dev 2008. Saya punya akses ke hampir semua yang bisa Anda tebak, pada akun MSDN.
jcolebrand

Judul pertanyaan sedikit membingungkan "Apa cara paling efektif untuk menduplikasi | instance | pada SQL 2008?" - contoh atau basis data?
CoderHawk

@Sandy ~ "Instance" ... memang, aku ingin semuanya.
jcolebrand

Jawaban:


4

Anda telah memukul paku di kepala: salin file. Saya menggunakan ini untuk efek yang baik.

Saya katakan Anda harus mendefinisikan "murah" untuk memasukkan investasi waktu untuk menyiapkan solusi yang tidak melibatkan xcopy


3

Umm, tidak yakin apakah ini membantu, tapi kami menggunakan serangkaian skrip untuk "membersihkan" basis data produksi dan menyiapkannya untuk penyalahgunaan pembangunan. Kami mengambil semua tabel besar yang memiliki kolom datetime dan kami membangun kembali tabel dengan hanya data tahun terakhir di dalamnya. Dari db penuh sekitar 200 GB kita mencapai sekitar 40 GB db untuk pengembangan. Terutama kami membuat skrip dinamis untuk membuat file bcp untuk setiap tabel, membuat ulang tabel (termasuk kendala terkait) dan kemudian menyisipkan hanya data tahun lalu.

Mungkin ada alat untuk melakukan ini, tetapi toko kami menjadi murah :-).


Ya, kita pergi ke rute BCP untuk banyak hal, jadi saya mengerti apa yang Anda katakan, dan memotong beberapa ini akan baik, tapi saya sudah memiliki sekitar 3GB data yang saya butuhkan, jadi saya tidak benar-benar ingin menambahkan lebih banyak di sana. Saya hanya ingin menyalin seluruh contoh dan mencari cara untuk terus melakukannya berulang kali. Tapi kalau tidak saya pikir saya pada taktik yang sama dengan apa yang Anda bicarakan, hanya sacle lebih kecil.
jcolebrand

Jadi ulangi semua langkah dalam batch :). SQL memiliki parameter batch dan Anda dapat menggabungkan file batch dengan file sql dan mendapatkan paket yang bagus. Saya telah membuat paket Pengiriman Log kustom (bisu) yang bekerja pada domain yang berbeda dan semua persiapan db dilakukan dalam file cmd / sql. Anda dapat membuat instance bernama hanya untuk Anda gunakan dan di sana mulai / hentikan layanan, pulihkan db, bersihkan, siapkan, cadangkan, dan kirim ke beberapa folder tertentu. Mungkin beberapa pekerjaan bisa dilakukan lebih cepat di PowerShell .. tapi saya tidak terbiasa dengannya.
Marian

ya itu idenya;)
jcolebrand

@ jcolebrand - Mungkin alat seperti Norton Ghost atau Clonezilla akan membantu? Anda membutuhkannya untuk menyalin folder cadangan prod di suatu tempat di tempat bermain Anda, lalu kembali ke sana melakukan semua kesenangan (pulihkan..trim ... dll). Anda tidak perlu membuat skrip tindakan penyalinan dan Anda hanya akan menangani bagian sql :).
Marian

oooooh itu bisa berguna. Jalan pertimbangan baru.
jcolebrand

0

Cara termudah untuk memutakhirkan skema Anda agar sesuai dengan sistem itu adalah dengan menggunakan alat seperti Red Gate SQL Compare atau Embarcadero DB Change Manager.

Ada banyak alat lain yang tersedia yang mungkin dapat melakukan perbandingan skema yang sama dan bahkan memberi Anda DDL untuk memutakhirkan skema database Anda.

Pilihan

  1. Gunakan Alat Pihak ke-3
  2. Pencadangan & Pemulihan Basis Data - Anda mungkin perlu memulihkan ke instance pementasan untuk menghapus data (karena batasan ruang pada laptop)
  3. Tulis skrip database Anda sendiri menggunakan SMO dan cukup buat pekerjaan yang membuat skrip objek, lalu buat ulang skema Anda setiap bulan / waktu Anda membutuhkannya, lalu gunakan SSIS untuk memuat data ke objek baru.

Bagaimana "Pencadangan dan pemulihan basis data" berfungsi untuk instance? Saya ingin menyimpan data tabel ini karena ini adalah kumpulan data lengkap, hanya lebih kecil dari produksi.
jcolebrand

SSIS mungkin akan membiarkan saya melakukan apa yang saya butuhkan tetapi saya tidak cukup tahu tentang itu. Saya harus menyelidiki lebih lanjut.
jcolebrand

@ jcolebrand - Saya menyarankan pemulihan cadangan, dengan hanya harus mempertimbangkan cara memindahkan data dari sistem langsung Anda ke sistem demo Anda ketika Anda melakukan hal-hal seperti menambahkan kolom. Namun ini memiliki kelemahan yang membutuhkan pemulihan maka pembersihan data sebelum cadangan lain dan mengembalikan / melepaskan dan melampirkan.
johndacostaa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.