ขั้นตอนการจัดเก็บภายใต้การควบคุมแหล่งที่มาแนวปฏิบัติที่ดีที่สุด


16

ฉันกำลังใช้ Tortoise SVN เพื่อควบคุมแหล่งโปรแกรมประยุกต์บนเว็บ NET อะไรจะเป็นวิธีที่ดีที่สุดในการนำ SQL Server ของเรามาใช้ในการควบคุมกระบวนการ ขณะนี้ฉันใช้ VS 2010 เป็นสภาพแวดล้อมการพัฒนาของฉันและเชื่อมต่อกับฐานข้อมูล SQL Server 2008 R2 นอกสถานที่โดยใช้ SQL Server Data Tools (SSDT)

สิ่งที่ฉันทำในอดีตคือการบันทึก procs เป็นไฟล์. sql และทำให้ไฟล์นี้อยู่ภายใต้การควบคุมของแหล่งที่มา ฉันแน่ใจว่าต้องมีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่ มีส่วนขยายที่ฉันสามารถติดตั้งบน VS2010, SSDT หรือแม้แต่ SQL Server บนเครื่องที่ใช้งานจริงได้หรือไม่?


2
หากคุณใช้ประเภทโครงการ SSDT ใน Visual Studio ให้เพิ่มโครงการนั้นลงในแหล่งควบคุม แค่นั้นแหละ.
Mark Storey-Smith

1
โปรดอธิบายวัตถุประสงค์ของคุณ - คุณกำลังมองหาเวอร์ชันของวัตถุฐานข้อมูลหรือคุณกำลังพยายามใช้สิ่งนี้เป็นแพลตฟอร์มการปรับใช้ด้วยหรือไม่
Jon Seigel

คำถามที่คล้ายกันstackoverflow.com/questions/146543/…
MiFreidgeim SO-stop Being evil

คำตอบ:


14

มีเครื่องมือออกมาเช่นนี้จาก Redgateแต่ฉันพบเสมอว่าวิธีที่ดีที่สุดคือการบันทึกเป็นไฟล์ SQL บางทีอาจเป็นแม้แต่ในโครงการฐานข้อมูล (SSDT?) ในโซลูชันของคุณ

นอกจากนี้ฉันขอแนะนำแนวทางต่อไปนี้:

  • ถือว่ารุ่น SVN เป็น "ปัจจุบัน" / "ล่าสุด" เสมอ
  • ตรวจสอบให้แน่ใจว่าสคริปต์ทั้งหมดที่คุณเรียกใช้มี "" ที่เหมาะสมif exists then dropในตอนเริ่มต้น
  • จำไว้ว่าให้เขียนสคริปต์สิทธิ์ของคุณถ้ามี

คุณสามารถสร้างไฟล์ SQL เหล่านี้ได้ในตอนแรกโดยการเขียนสคริปต์โดยตรงจาก SSMS และคุณสามารถตั้งค่า SSMS ให้เขียนสคริปต์ " drop" และ " create" ทั้งหมดของคุณรวมถึงการอนุญาตของคุณ


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

นอกจากนี้ไม่อนุญาตให้ใช้สิทธิในการ devs บนผลิตภัณฑ์และผู้ที่มีสิทธิ์ปรับใช้จากการควบคุมแหล่งที่มาเท่านั้น
HLGEM

3
โปรดระวังด้วย "ถ้ามีอยู่พวกมันดร็อป (ใหม่) สร้างด้วยนิยามใหม่" หากเปลี่ยนตาราง / มุมมองที่อ้างอิงโดยมุมมอง / โปรแกรมอื่น ๆ ฉันมีสถานการณ์ยอดฮิตที่ผลลัพธ์ของมุมมองที่ขึ้นต่อกันนั้นเสียหาย (ประเภทคอลัมน์และเนื้อหาถูกย้าย แต่ไม่มีชื่อ) เนื่องจากแผนการสืบค้นที่ถูกนำมาใช้ซ้ำโดยไม่ต้องคอมไพล์ใหม่โดยสมมติว่าโครงสร้างก่อนหน้า ตัวเลือกที่ปลอดภัยกว่าคือ "ถ้าไม่มีอยู่สร้างดัมมี่" ตามด้วย "แก้ไขตาราง / มุมมอง / proc" เนื่องจากการเปลี่ยนแปลงจะทำตามระเบียน sysdepends เพื่อทำให้แผนการใช้งานไม่ถูกต้องตามที่ต้องการและวาง + สร้างจะไม่เป็นเช่น ห้อยต่องแต่งอ้างอิง
David Spillett

ความคิดเห็นโดย @DavidSpillett มีความสำคัญยิ่งขึ้นถ้าคุณมีทริกเกอร์ในการควบคุมเวอร์ชันเนื่องจากการปล่อย + สร้างสามารถล้มเหลวได้แม้ในการหยุดชะงักไม่ควรเกิดขึ้นกับการสร้างหุ่นจำลอง + แก้ไข
James Z

4

การบันทึกไฟล์ SQL ในการควบคุมซอร์สจัดเตรียมการควบคุมไฟล์ SQL เท่านั้น มันไม่ได้ควบคุมการเปลี่ยนแปลงของวัตถุฐานข้อมูลจริงและไม่ป้องกันการเปลี่ยนแปลงพร้อมกันของวัตถุฐานข้อมูลเดียวกันโดยผู้ใช้หลายคน สิ่งที่เราใช้เป็นเครื่องมือของบุคคลที่สาม ( เวอร์ชั่น ApexSQL) มันรวมทั้งกับ SSMS และ VS คุณสามารถเลือกว่าจะทำงานกับเวอร์ชันฐานข้อมูลของวัตถุหรือกับรุ่นการควบคุมแหล่งที่มา หากคุณกำลังแก้ไขเวอร์ชันฐานข้อมูลจะมีการตรวจสอบกับคุณโดยอัตโนมัติดังนั้นจึงไม่มีใครสามารถแก้ไขได้ (ไม่รวมการเปลี่ยนแปลงจากผู้ใช้ที่แตกต่างกัน) เฉพาะเมื่อคุณเช็คอินอีกครั้งผู้อื่นสามารถแก้ไขได้ และคุณสามารถมีรุ่น SC ของคุณแตกต่างจากรุ่นของวัตถุสด (ฉันใช้มันเมื่อฉันออกจากวันและวางแผนที่จะเสร็จสิ้นการแก้ไขและทดสอบในครั้งต่อไป)


3

ใช้ RedGate Source Control เพื่อเชื่อมต่อกับแหล่งควบคุมของคุณ

http://www.red-gate.com/products/sql-development/sql-source-control/

มันจะขอ SSMS ของคุณโดยตรงไปยังแหล่งเก็บข้อมูลการควบคุมของคุณและยังช่วยให้การตรวจสอบในข้อมูลคงที่

ทำงานเหมือนจับใจ


3

ลองAnkhsvnแนะนำเป็นอย่างยิ่งและฟรี

จากหน้าแรก:

AnkhSVN เป็นผู้ให้บริการการโค่นล้มการควบคุมแหล่งสำหรับ Microsoft Visual Studio 2005 2008 2010 และ 2012

AnkhSVN ให้การสนับสนุนการจัดการซอร์สโค้ด Apache ™Subversion®ให้กับโปรเจ็กต์ทุกประเภทที่ได้รับการสนับสนุนโดย Visual Studio และช่วยให้คุณสามารถดำเนินการควบคุมเวอร์ชันทั่วไปได้โดยตรงจากภายใน Microsoft Visual Studio IDE

แดชบอร์ดการเปลี่ยนแปลงที่รอดำเนินการให้ข้อมูลเชิงลึกที่เป็นเอกลักษณ์ในกระบวนการพัฒนาของคุณและให้การเข้าถึงซอร์สโค้ดและคุณลักษณะการจัดการปัญหาได้ง่าย การรวมการควบคุมโค้ดแหล่งที่มาลึก (SCC) ช่วยให้คุณสามารถมุ่งเน้นการพัฒนาในขณะที่ AnkhSVN ติดตามการเปลี่ยนแปลงทั้งหมดของคุณและให้เครื่องมือในการจัดการความต้องการเฉพาะของคุณได้อย่างมีประสิทธิภาพ


3

ฉันได้ลองทั้งโครงการฐานข้อมูลของ RedGate และ Visual Studio แล้วและฉันต้องการเก็บคำจำกัดความฐานข้อมูลไว้ในโครงการฐานข้อมูล ทันทีที่ฐานข้อมูลกลายเป็นส่วนหนึ่งของโซลูชันคุณสามารถใช้ผู้ให้บริการแหล่งข้อมูลที่คุณต้องการ ส่วนใหญ่มีการรวม Visual Studio ที่ยอดเยี่ยม

ด้วยเครื่องมือ SSDT คุณจะมีคำจำกัดความของฐานข้อมูล 'รุ่นล่าสุด' ช่วยให้คุณทำการเปรียบเทียบสกีมาและสร้างสคริปต์อัพเกรดสกีมาได้อย่างง่ายดาย

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

ดังนั้นทันทีที่ฉันเปิดตัว v1.0 ความต้องการที่จำเป็นในการดูแลสคริปต์อัพเกรด บางครั้งสิ่งเหล่านี้มีการเปลี่ยนแปลงสคีมา แต่หลายครั้งที่ฉันต้องสร้างค่าเริ่มต้นตามเนื้อหาของตารางอื่น ๆ จำเป็นต้องปล่อยข้อ จำกัด เฉพาะจนกว่าฉันจะ seed ข้อมูลเป็นต้นโดยทั่วไปการอัปเกรดสคีมาจะไม่ตัดเลยทีเดียว การตั้งค่าของฉันคือการมีสคริปต์อัพเกรดเหล่านี้ในโฟลเดอร์แยกต่างหากในโครงการฐานข้อมูลด้วย โดยทั่วไปแล้วจะมีลักษณะเช่น 'อัพเกรดจาก v1.0 เป็น v1.1'

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

ประโยชน์อีกประการหนึ่งจากโครงการฐานข้อมูลคือการสามารถปรับใช้ชุดข้อมูลที่แตกต่างกันตามสคีมาเดียวกัน ฉันมีชุดข้อมูลที่แตกต่างกันสำหรับการพัฒนาทีม QA การทดสอบการยอมรับของผู้ใช้และสำหรับการทดสอบการรวมอัตโนมัติ เนื่องจากโครงการฐานข้อมูลสามารถมีสคริปต์หลังการปรับใช้เพียงหนึ่งเดียวเคล็ดลับที่นี่คือการสร้างโครงการฐานข้อมูลใหม่ที่อ้างอิงถึงโครงการ 'ต้นแบบ' และเพื่อให้ชุดข้อมูลที่กำหนดเองเป็นส่วนหนึ่งของกระบวนการปรับใช้การโพสต์ของโครงการนั้น

นี่คือ 2 เซ็นต์ของฉันไม่ว่าคุณจะทำอะไรขึ้นมาเหนือสิ่งอื่นใดมันจะต้องเหมาะสมกับคุณและทีมของคุณและหวังว่าจะสนับสนุนคุณในงานทั่วไปส่วนใหญ่


0

ฉันเขียนเครื่องมือด้วยตัวเอง

สามารถดาวน์โหลดได้ฟรี - http://www.gitsql.net

ฉันหวังว่ามันจะช่วยให้คนอื่นที่ต้องการบรรลุเป้าหมายเดียวกัน

นี่คือบทความที่อธิบายวิธีการที่มาควบคุม SQL Server http://gitsql.net/documentation-04_SQL_Server_and_GIT

ฉันพยายามทำให้มันง่ายที่สุด (3 หน้าจอ)

  • เชื่อมต่อกับ SQL Server
  • เลือกวัตถุ
  • เลือกโฟลเดอร์ที่จะส่งออกไปยัง / นำเข้าจาก

ฉันยังเพิ่มความสามารถในการเลือกวัตถุแต่ละอย่างเพื่อนำเข้าหรือส่งออกโดยไม่ตั้งใจ ซึ่งทำให้มันง่ายมากในขณะที่กำลังพัฒนา

ฉันมักจะทำการเปลี่ยนแปลงขั้นตอนการจัดเก็บและตารางแล้วส่งออกวัตถุทั้งสองไปยังไดเรกทอรี GIT

จากนั้นฉันใช้ Source Tree เพื่อดูการเปลี่ยนแปลงจากนั้นให้คอมมิตเป็นบิตบิตถ้าฉันมีความสุข


4
ดาวน์โหลดฟรี - แต่สำหรับ 20 วัตถุเท่านั้น คำตอบนี้เป็นเพียงโฆษณาสินค้าของคุณ
Thronk

-1

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

Servantt เป็น WinMerge สำหรับการเปรียบเทียบฐานข้อมูลเซิร์ฟเวอร์ SQL กับสคริปต์ที่ควบคุมเวอร์ชัน

สนับสนุนและสนับสนุนแนวทางปฏิบัติที่ดีที่สุดในการพัฒนาซอฟต์แวร์:

  • การรักษาวัตถุฐานข้อมูลไว้ภายใต้การควบคุมเวอร์ชัน (*)
  • การลบสิทธิ์การเข้าถึงจากนักพัฒนาในสภาพแวดล้อมการผลิต
  • DBA ตรวจสอบการเปลี่ยนแปลงในขั้นตอน / มุมมองสำหรับคอขวดของประสิทธิภาพและมาตรฐานการตั้งชื่อ
  • การตั้งชื่อออบเจ็กต์โดยใช้ตัวระบุที่ผ่านการรับรองและตัวคั่นที่มีวงเล็บ (จะแก้ไขสคริปต์ CREATE PROCEDURE / VIEW / FUNCTION / ฯลฯ )

(*) สคริปต์จะถูกบันทึกลงในโฟลเดอร์ภายในเครื่องซึ่งอาจเป็นสำเนาที่ใช้งานได้ของ Git, Subversion, TFS, Source Safe หรือ VCS อื่น ๆ

ดาวน์โหลดฟรี: http://servantt.com

รุ่นมืออาชีพ (ซึ่งยังอยู่ระหว่างการพัฒนา) จะเป็นสัตว์ร้ายที่แตกต่างอย่างสิ้นเชิง - เป็นเป้าหมายของการปรับใช้อัตโนมัติ (การจัดการการปล่อย) สำหรับการทำงานอัตโนมัติเช่นการอัพเดท IIS การอัพเดทบริการ Windows เป็นต้น


เครื่องมือนี้ใช้ไม่ได้
Neeraj Kumar

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