Thủ tục lưu trữ dưới sự kiểm soát nguồn, thực hành tốt nhất


15

Tôi hiện đang sử dụng Rùa SVN để kiểm soát nguồn ứng dụng Web .NET. Điều gì sẽ là cách tốt nhất để đưa các thủ tục lưu trữ SQL Server của chúng tôi vào Kiểm soát nguồn? Tôi hiện đang sử dụng VS 2010 làm môi trường phát triển của mình và kết nối với cơ sở dữ liệu SQL Server 2008 R2 ngoài cơ sở bằng Công cụ dữ liệu SQL Server (SSDT).

Những gì tôi đã làm trong quá khứ là lưu các procs vào một tệp .sql và giữ các tệp này dưới sự kiểm soát nguồn. Tôi chắc chắn phải có một cách hiệu quả hơn thế này? Có tiện ích mở rộng nào tôi có thể cài đặt trên VS2010, SSDT hoặc thậm chí SQL Server trên máy sản xuất không?


2
Nếu bạn đang sử dụng loại dự án SSDT trong Visual Studio, hãy thêm dự án đó vào kiểm soát nguồn. Đó là nó.
Mark Storey-Smith

1
Vui lòng làm rõ (các) mục tiêu của bạn - bạn chỉ đang tìm kiếm phiên bản của các đối tượng cơ sở dữ liệu, hay bạn đang cố gắng sử dụng điều này như một nền tảng triển khai?
Jon Seigel

Câu hỏi tương tự stackoverflow.com/questions/146543/
Mạnh

Câu trả lời:


14

Có những công cụ hiện có, chẳng hạn như công cụ này từ Redgate , nhưng tôi luôn thấy rằng tốt nhất là lưu dưới dạng tệp SQL, thậm chí có thể trong Dự án cơ sở dữ liệu (SSDT?) Trong giải pháp của bạn.

Cùng với điều này, tôi đề nghị các hướng dẫn sau:

  • Luôn coi phiên bản SVN là "hiện tại" / "mới nhất"
  • Đảm bảo rằng mọi tập lệnh bạn chạy đều có "" thích hợp if exists then dropkhi bắt đầu
  • Nhớ kịch bản quyền của bạn, nếu có

Ban đầu, bạn có thể tạo các tệp SQL này bằng cách viết kịch bản trực tiếp từ SSMS và bạn có thể đặt SSMS thành tập lệnh tất cả " drop" và " create" cũng như các quyền của bạn.


Tôi không biết loại dự án cơ sở dữ liệu và chỉ mới bắt đầu khám phá SSDT, nhưng điều này có vẻ đầy hứa hẹn. Tôi đã chọn giải pháp này vì không phụ thuộc vào các công cụ của bên thứ 3 và tôi có thể dễ dàng thả các tệp .sql vào Kiểm soát nguồn hiện tại của chúng tôi.
QFDev

Cũng không cho phép các nhà phát triển trên prod và những người có quyền chỉ triển khai từ kiểm soát nguồn.
HLGEM

3
Hãy cẩn thận với "nếu tồn tại chúng thả, (tái) tạo với định nghĩa mới" nếu thay đổi bảng / chế độ xem được tham chiếu bởi các chế độ xem / procs khác. Tôi đã gặp phải trường hợp đầu ra của các chế độ xem phụ thuộc như vậy bị hỏng (loại cột và nội dung được di chuyển nhưng không có tên) do kế hoạch truy vấn được sử dụng lại mà không biên dịch lại giả định cấu trúc trước đó. Tùy chọn an toàn hơn là "nếu không tồn tại tạo hình nộm", theo sau là "bảng thay đổi / chế độ xem / Proc" vì thay đổi sẽ theo các bản ghi sysdepends để vô hiệu hóa các kế hoạch khi cần và thả + tạo sẽ không xóa bỏ các bản ghi đó và không quét tài liệu tham khảo lơ lửng.
David Spillett

Nhận xét của @DavidSpillett thậm chí còn quan trọng hơn nếu bạn có các kích hoạt trong kiểm soát phiên bản, bởi vì thả + tạo có thể thất bại ngay cả khi bế tắc, không nên xảy ra với tạo giả + thay đổi
James Z

4

Lưu các tệp SQL trong kiểm soát nguồn chỉ cung cấp quyền kiểm soát các tệp SQL. Nó không kiểm soát các thay đổi của các đối tượng cơ sở dữ liệu thực tế, cũng không ngăn chặn các thay đổi đồng thời của cùng một đối tượng cơ sở dữ liệu bởi nhiều người dùng (và tôi đoán bạn cũng muốn kiểm soát điều đó). Những gì chúng tôi sử dụng là một công cụ của bên thứ 3 ( Phiên bản ApexSQL), nó tích hợp cả với SSMS và VS, bạn có thể chọn làm việc với phiên bản cơ sở dữ liệu của đối tượng hay với phiên bản Kiểm soát nguồn. Nếu bạn đang chỉnh sửa phiên bản cơ sở dữ liệu, nó sẽ tự động chỉ kiểm tra cho bạn, vì vậy không ai có thể chỉnh sửa phiên bản đó (nó không hợp nhất các thay đổi từ những người dùng khác nhau). Chỉ khi bạn kiểm tra lại, người khác mới có thể sửa đổi nó. Và bạn có thể có phiên bản SC của bạn khác với phiên bản của một đối tượng sống (Tôi sử dụng phiên bản đó khi tôi rời đi trong ngày và dự định hoàn thành các chỉnh sửa và kiểm tra nó vào lần tiếp theo)



3

Hãy thử Ankhsvn , rất khuyến khích và miễn phí.

Từ trang chủ:

AnkhSVN là Nhà cung cấp kiểm soát nguồn Subversion cho Microsoft Visual Studio 2005, 2008, 2010 và 2012 .

AnkhSVN cung cấp hỗ trợ quản lý mã nguồn Apache ™ Subversion® cho tất cả các loại dự án được Visual Studio hỗ trợ và cho phép bạn thực hiện các hoạt động kiểm soát phiên bản phổ biến nhất trực tiếp từ bên trong Microsoft Visual Studio IDE.

Bảng điều khiển Pending Change cung cấp cho bạn cái nhìn sâu sắc độc đáo trong quá trình phát triển của bạn và cung cấp quyền truy cập dễ dàng vào mã nguồn và các tính năng quản lý vấn đề. Tích hợp kiểm soát mã nguồn sâu (SCC) cho phép bạn tập trung vào phát triển, trong khi AnkhSVN theo dõi tất cả các thay đổi của bạn và cung cấp cho bạn các công cụ để xử lý hiệu quả các nhu cầu cụ thể của bạn.


2

Tôi đã thử cả dự án cơ sở dữ liệu của RedGate và Visual Studio và tôi thích lưu trữ định nghĩa cơ sở dữ liệu trong dự án cơ sở dữ liệu. Ngay khi cơ sở dữ liệu trở thành một phần của giải pháp, bạn có thể sử dụng nhà cung cấp kiểm soát nguồn ưa thích của mình. Hầu hết có tích hợp Visual Studio tuyệt vời.

Với các công cụ SSDT, bạn có 'phiên bản mới nhất' của định nghĩa cơ sở dữ liệu, cho phép bạn dễ dàng thực hiện so sánh lược đồ và tạo tập lệnh nâng cấp lược đồ.

Điều đó nói rằng, lược đồ thường chỉ là một phần của phương trình. Trong cuộc sống thực, hóa ra cơ sở dữ liệu đã có sẵn rất nhiều dữ liệu. Và người dùng của tôi có xu hướng khá thất vọng khi họ mất nó.

Vì vậy, ngay sau khi tôi tung ra v1.0, các mảng cần thiết để duy trì các tập lệnh nâng cấp. Đôi khi những điều này chỉ chứa các thay đổi lược đồ, nhưng nhiều lần tôi cần tạo mặc định dựa trên nội dung của một số bảng khác, cần phải giải phóng một ràng buộc cụ thể cho đến khi tôi gieo dữ liệu, v.v. Sở thích của tôi là có các kịch bản nâng cấp này trong một thư mục riêng trong dự án cơ sở dữ liệu. Chúng thường trông giống như 'nâng cấp từ v1.0 lên v1.1'.

Cơ sở dữ liệu của tôi luôn có bảng tham chiếu cho tôi biết số phiên bản hiện tại, vì vậy tôi có thể chặn các nâng cấp không tương thích. Tuyên bố đầu tiên trong tập lệnh nâng cấp của tôi kiểm tra phiên bản hiện tại và bảo lãnh nếu nó khác với dự kiến.

Một lợi ích khác từ các dự án cơ sở dữ liệu là có thể triển khai các bộ dữ liệu khác nhau dựa trên cùng một lược đồ. Tôi có một bộ dữ liệu khác nhau để phát triển, nhóm QA, thử nghiệm chấp nhận của người dùng và cho các thử nghiệm tích hợp tự động. Vì một dự án cơ sở dữ liệu chỉ có thể có 1 tập lệnh triển khai sau, nên mẹo ở đây là tạo một dự án cơ sở dữ liệu mới tham chiếu dự án 'chính' và làm cho bộ dữ liệu tùy chỉnh của dự án triển khai bài của dự án đó.

Đây là 2 xu của tôi, bất kể bạn đưa ra điều gì, trên hết, nó phải phù hợp với bạn và nhóm của bạn và hy vọng hỗ trợ bạn trong hầu hết các nhiệm vụ chung.


0

Cuối cùng tôi đã tự viết một công cụ.

Nó có sẵn để tải xuống miễn phí - http://www.gitsql.net

Tôi hy vọng nó sẽ giúp những người khác muốn đạt được mục tiêu cuối cùng.

Đây là một bài viết mô tả cách kiểm soát nguồn SQL Server. http://gitsql.net/documentation-04_Query_Server_and_GIT

Tôi đã cố gắng làm cho nó dễ dàng nhất có thể. (3 màn hình)

  • Kết nối với máy chủ SQL
  • Lựa chọn các vấn đề
  • Chọn thư mục để xuất / nhập từ

Tôi cũng - vô tình - đã thêm tính năng có thể chọn lọc các đối tượng riêng lẻ để nhập - hoặc xuất. Điều này làm cho nó dễ dàng hơn nhiều trong khi phát triển.

Tôi thường sẽ thay đổi một thủ tục được lưu trữ và một bảng, sau đó xuất hai đối tượng đó vào một thư mục GIT.

Sau đó, tôi sử dụng Source Tree để xem trực quan các thay đổi và sau đó cam kết chúng vào bitbucket nếu tôi thấy hạnh phúc.


3
tải về miễn phí - nhưng chỉ cho 20 đối tượng. Câu trả lời này chỉ là một quảng cáo cho sản phẩm của bạn.
Thronk

-1

Công ty của tôi vừa phát triển công cụ mới này ( miễn phí ) giúp bạn dễ dàng trích xuất tập lệnh cho cơ sở dữ liệu SQL, có thể so sánh , có thể khởi chạy WinMerge để nhanh chóng so sánh tập lệnh với cơ sở dữ liệu trực tiếp và cũng có thể đồng bộ hóa sự khác biệt cả khi cập nhật tập lệnh hoặc áp dụng các thay đổi đến cơ sở dữ liệu (ngoại trừ các bảng, sẽ liên quan đến sự phức tạp hơn và rủi ro nhiều hơn).

Servantt là WinMerge để so sánh Cơ sở dữ liệu SQL Server với Tập lệnh được kiểm soát theo phiên bản.

Nó hỗ trợ và khuyến khích các thực tiễn tốt nhất trong phát triển phần mềm:

  • Giữ các đối tượng cơ sở dữ liệu dưới sự kiểm soát phiên bản (*)
  • Xóa quyền truy cập từ nhà phát triển trên môi trường sản xuất
  • DBA xem xét các thay đổi trong quy trình / quan điểm đối với các tắc nghẽn hiệu suất và tiêu chuẩn đặt tên
  • Đặt tên các đối tượng bằng cách sử dụng các mã định danh và dấu phân cách đủ tiêu chuẩn (nó sửa các kịch bản TẠO QUY TRÌNH / XEM / CHỨC NĂNG / vv)

(*) Các tập lệnh được lưu vào một thư mục cục bộ có thể là bản sao hoạt động của Git, Subversion, TFS, Source Safe hoặc bất kỳ VCS nào khác.

Tải xuống miễn phí: http://servantt.com

Phiên bản chuyên nghiệp (vẫn đang được phát triển) sẽ là một quái thú hoàn toàn khác - nó nhắm mục tiêu tự động hóa triển khai (quản lý phát hành), để tự động hóa các tác vụ như cập nhật IIS, cập nhật Windows Services, v.v.


Công cụ này không hoạt động.
Neeraj Kumar

@NeerajKumar có một địa chỉ "liên hệ với chúng tôi" trong trang nơi bạn có thể mô tả vấn đề của mình. Tôi sẽ rất vui lòng giúp đỡ. Có hơn một nghìn người dùng hoạt động, tôi cho rằng nó hoạt động theo một nghĩa nào đó :-)
Drizin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.