วิธีที่มีประสิทธิภาพมากที่สุดในการทำซ้ำอินสแตนซ์บน SQL 2008 คืออะไร


14

เรามีอินสแตนซ์ฐานข้อมูลอย่างง่ายที่มีข้อมูลเพียงพอในฐานข้อมูลเพื่อให้มีประโยชน์และเราสามารถใช้เพื่อวัตถุประสงค์ในการสาธิตและฉันต้องการที่จะนำสำเนาของมันไปไว้ในแล็ปท็อปของฉัน ฉันไม่ได้อยู่ที่สำนักงาน (อินสแตนซ์ฐานข้อมูล dev ปกติมีขนาดประมาณ 150GB หนึ่งอินสแตนซ์นี้คือ 3GB)

วิธีทำซ้ำ / สคริปต์ได้มากที่สุดสำหรับการสร้างอินสแตนซ์บนแล็ปท็อปของฉันใหม่คืออะไร ฉันแน่ใจว่าฉันจะต้องเรียกใช้งานโปรแกรมติดตั้งอีกครั้งสำหรับ SqlServer2008 และตั้งค่าอินสแตนซ์ แต่หลังจากนั้น ... ฉันคิดว่าฉันต้องการจะลบฐานข้อมูลเก่าของฉันทุกเดือนหรือมากกว่านั้น คัดลอกสิ่งใหม่ทั้งหมดไปยังแล็ปท็อปของฉันเนื่องจากอินสแตนซ์ของฉันจะไม่เปลี่ยนแปลงทั้งในระบบสาธิตเดียวหรือแล็ปท็อป แต่ฐานข้อมูลเองจะอัปเดตพร้อมรีเฟรชบน sprocs และอื่น ๆ

ฉันได้พิจารณาการเขียนสคริปต์ทั้งหมด "ปล่อยฐานข้อมูล - ไฟล์เพิ่มฐานข้อมูล - ไฟล์ {พา ธ }" และเก็บไว้ในไฟล์แบทช์ที่รันได้ในบางประเภทแล้วฉันจะ "วางลบคัดลอกเพิ่ม" แต่สงสัยว่ามี เป็นวิธีที่ดีกว่าแค่ xcopy และแบทช์?

ฉันกำลังพยายามทำสิ่งนี้ในราคาถูก (เราไม่ได้ลองทำในราคาถูกเสมอไป) ดังนั้นฉันจึงไม่สนใจผลิตภัณฑ์ RedGate เป็นพิเศษ ฉันต้องการบางสิ่งที่ฉันสามารถบำรุงรักษาได้อย่างง่ายดายในเครื่องมือแก้ไขข้อความด้วยตนเอง


มันเป็นฐานข้อมูลเดียวหรือเซิร์ฟเวอร์อินสแตนซ์ sql ที่มีฐานข้อมูลมากกว่าหนึ่ง? ฉันคิดว่าคุณมีเซิร์ฟเวอร์ sql ติดตั้งในแล็ปท็อปและเครื่องพัฒนาของคุณและคุณมีฐานข้อมูลเดียวในกรณีนี้คุณสามารถใช้การสำรองและกู้คืน การพัฒนาเครื่องสำรองฐานข้อมูลคัดลอกไปยังแล็ปท็อปและคืนค่าในทางกลับกัน ... นั่นทำให้รู้สึก?
CoderHawk

SQL Server Express Edition คืออะไร หรือมาตรฐาน SSISเป็นตัวเลือกที่ดีสำหรับสถานการณ์เช่นนี้ แต่น่าเสียดายที่ไม่มีใน Express และ Web editions
CoderHawk

ขออภัย @Sandy ~ เป็น SQL Dev 2008 ฉันมีสิทธิ์เข้าถึงทุกอย่างที่คุณคาดเดาได้จาก MSDN
jcolebrand

ชื่อคำถามสับสนเล็กน้อย "วิธีที่มีประสิทธิภาพมากที่สุดในการทำซ้ำ | อินสแตนซ์ | บน SQL 2008 คืออะไร" - อินสแตนซ์หรือฐานข้อมูล
CoderHawk

@ แซนดี้ ~ "อินสแตนซ์" ... แน่นอนฉันต้องการทุกอย่าง
jcolebrand

คำตอบ:


4

คุณโดนตะปูหัว: คัดลอกไฟล์ ฉันใช้มันเพื่อผลที่ดี

ฉันว่าคุณต้องกำหนด "ถูก" เพื่อรวมการลงทุนเวลาเพื่อเตรียมโซลูชันที่ไม่เกี่ยวข้องกับ xcopy


3

อืมไม่แน่ใจว่าสิ่งนี้จะช่วยได้หรือไม่ แต่เราใช้ชุดของสคริปต์เพื่อ "ล้าง" ฐานข้อมูลการผลิตและเตรียมไว้สำหรับการใช้ในทางที่ผิด เรารับตารางขนาดใหญ่ทั้งหมดที่มีคอลัมน์วันที่และเรากำลังสร้างตารางใหม่โดยมีเพียงปีสุดท้ายของข้อมูล จากฐานข้อมูลเต็มประมาณ 200 GB เราจะได้รับประมาณ 40 GB db สำหรับการพัฒนา ส่วนใหญ่เรากำลังสร้างสคริปต์แบบไดนามิกสำหรับการสร้างไฟล์ bcp สำหรับแต่ละตารางสร้างตารางใหม่ (รวมถึงข้อ จำกัด ที่เกี่ยวข้อง) จากนั้นแทรกจำนวนมากเฉพาะข้อมูลปีที่แล้ว

อาจมีเครื่องมือในการทำเช่นนี้ แต่ร้านค้าของเราราคาถูก :-)


ใช่เราไปตามเส้นทาง BCP สำหรับสิ่งต่าง ๆ มากมายดังนั้นฉันจึงได้สิ่งที่คุณพูดและตัดทอนบางสิ่งนี้จะดี แต่ฉันมีข้อมูลประมาณ 3GB ที่ฉันต้องการอยู่แล้วดังนั้นฉันจึงไม่ได้จริงๆ กำลังมองหาเพื่อเพิ่มมากขึ้นที่นั่น ฉันต้องการคัดลอกตัวอย่างทั้งหมดและคิดว่ามีวิธีที่จะทำมันซ้ำ ๆ แต่อย่างอื่นฉันคิดว่าฉันกำลังตะปูหัวเดียวกับสิ่งที่คุณพูดถึงเพียง sacle ที่เล็กกว่า
jcolebrand

ดังนั้นทำซ้ำขั้นตอนทั้งหมดเป็นชุด :) SQL มีพารามิเตอร์แบตช์และคุณสามารถรวมไฟล์แบตช์กับไฟล์ sql และรับแพ็คเกจที่ดี ฉันได้สร้างแพคเกจ Log Shipping (dumb) ที่กำหนดเองที่ทำงานบนโดเมนที่ต่างกันและการเตรียมฐานข้อมูลทั้งหมดจะทำในไฟล์ cmd / sql คุณสามารถสร้างอินสแตนซ์ที่ตั้งชื่อแล้วเท่านั้นสำหรับการใช้งานของคุณและมีการเริ่ม / หยุดบริการเรียกคืนฐานข้อมูลทำความสะอาดจัดทำสำรองข้อมูลและจัดส่งไปยังโฟลเดอร์เฉพาะ บางทีงานบางอย่างสามารถทำได้เร็วขึ้นใน powershell .. แต่ฉันไม่คุ้นเคยกับมัน
Marian

ใช่นั่นคือความคิด;)
jcolebrand

@jcolebrand - บางทีเครื่องมืออย่าง Norton Ghost หรือ Clonezilla อาจช่วยได้? คุณต้องการใช้มันเพื่อคัดลอกโฟลเดอร์สำรอง prod ที่ไหนสักแห่งในสนามเด็กเล่นของคุณจากนั้นกลับมาทำสิ่งที่สนุก (คืนค่า .. ส่วนที่เหลือ ... ฯลฯ ) คุณไม่จำเป็นต้องเขียนสคริปต์การกระทำการคัดลอกและคุณจะจัดการเฉพาะส่วนของ sql :)
Marian

oooooh ที่อาจมีประโยชน์ ช่องทางใหม่ในการพิจารณา
jcolebrand

0

วิธีที่ง่ายที่สุดในการอัปเกรดสคีมาของคุณให้ตรงกับระบบเหล่านั้นคือการใช้เครื่องมือเช่น Red Gate SQL Compare หรือ Embarcadero DB Change Manager

มีเครื่องมืออื่น ๆ ที่พร้อมใช้งานซึ่งสามารถทำการเปรียบเทียบสกีมาเดียวกันและให้ DDL เพื่ออัพเกรดสคีมาฐานข้อมูลของคุณ

ตัวเลือก

  1. ใช้เครื่องมือของบุคคลที่สาม
  2. การสำรองฐานข้อมูล & การคืนค่า - คุณอาจจำเป็นต้องกู้คืนเป็นอินสแตนซ์การจัดเตรียมเพื่อลบข้อมูล (เนื่องจากข้อ จำกัด ด้านพื้นที่บนแล็ปท็อป)
  3. เขียนสแคปเตอร์ฐานข้อมูลของคุณเองโดยใช้ SMO และเพียงสร้างงานที่เขียนสคริปต์วัตถุจากนั้นสร้างสคีมาของคุณใหม่ทุกเดือน / เวลาที่คุณต้องการจากนั้นใช้ SSIS เพื่อโหลดข้อมูลลงในวัตถุใหม่

"การสำรองและกู้คืนฐานข้อมูล" ทำงานอย่างไรสำหรับอินสแตนซ์ ฉันต้องการเก็บข้อมูลไว้ในตารางเหล่านี้เพราะเป็นชุดข้อมูลแบบเต็มขนาดเล็กกว่าการผลิต
jcolebrand

SSIS อาจให้ฉันทำในสิ่งที่ฉันต้องการ แต่ฉันไม่รู้เกี่ยวกับเรื่องนั้นมากพอ ฉันควรตรวจสอบเพิ่มเติม
jcolebrand

@ jcolebrand - ฉันแนะนำให้คืนค่าการสำรองข้อมูลโดยเพียงแค่ต้องพิจารณาวิธีการย้ายข้อมูลข้ามจากระบบสดของคุณไปยังระบบตัวอย่างของคุณเมื่อคุณทำสิ่งต่าง ๆ เช่นการเพิ่มคอลัมน์ อย่างไรก็ตามสิ่งนี้มีข้อเสียเปรียบที่ต้องการการกู้คืนจากนั้นล้างข้อมูลก่อนที่จะทำการสำรองข้อมูลอีกครั้ง
johndacostaa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.