2009-02-19 52 views

Trả lời

25

Có. Tất cả mã phải được lưu trữ trong điều khiển nguồn.

Đơn giản chỉ cần đặt, mã là mã và những sai lầm xảy ra. Thật tuyệt khi có thể quay lại và xem điều gì đã thay đổi theo thời gian và có thể quay trở lại những thay đổi đó.

Chúng ta phải thêm nó theo cách thủ công vào hệ thống kiểm soát nguồn, nhưng bạn có thể tạo phần bổ trợ cho Sql Server Hệ thống quản lý. Tôi chưa bao giờ tạo một cái để tự động thêm nó vào điều khiển nguồn, nhưng tôi cho rằng bạn có thể. Ngoài ra, tất cả các mã được lưu trữ trong bảng sql, vì vậy bạn có thể trong lý thuyết tạo ra một quá trình hoặc một cái gì đó để đi qua bảng (s) và lấy tất cả các mã và cam kết nó tự động.

Cập nhật: Tôi sẽ luôn viết mã phụ để kiểm tra xem mã có tồn tại không và nếu nó không tạo quy trình phụ và sau đó tập lệnh thực tế sẽ làm và thay đổi thủ tục.

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE 
id = OBJECT_ID(N'[dbo].[SomeStoredProcedure]') AND 
OBJECTPROPERTY(id,N'IsProcedure') = 1) 

EXEC sp_executesql N'CREATE PROCEDURE [dbo].[SomeStoredProcedure] AS 

SELECT ''SPROC Template''' 

GO 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

ALTER PROCEDURE SomeStoredProcedure 

Thực hiện thao tác thả và tạo lại sẽ xóa tất cả quyền của người dùng mà bạn đã thiết lập.

+1

Và tôi sẽ thêm các định nghĩa bảng bao gồm chỉ mục, khóa, v.v ... và bất kỳ dữ liệu 'tra cứu' nào không được dự kiến ​​sẽ được tạo trong suốt thời gian tồn tại của ứng dụng. –

0

Bạn nên làm như vậy.

Theo hiểu biết của tôi, không có công cụ nào tồn tại để tự động hóa quá trình này. Ít nhất, năm năm trước, khi tôi đang xem xét việc xây dựng một, dường như không có bất kỳ sự cạnh tranh nào.

+0

Có các công cụ ngoài kia và studio trực quan có một số khả năng được tích hợp sẵn. Tuy nhiên, nó hầu như không đủ. Chúng tôi sẽ mua giấy phép mã souce cho sản phẩm của bên thứ ba và tinh chỉnh trong các tính năng bổ sung mà chúng tôi cần để làm cho nó hoạt động. – JohnFx

0

Chúng tôi lưu trữ procs của chúng tôi trong Subversion, tất cả các SQL Mã bao gồm DDL của bạn phải ở trong một số loại kho kiểm soát nguồn

0

SPs và schemas bảng cho rằng vấn đề là toàn bộ tài sản đó phải được dưới sự kiểm soát phiên bản. Trong một thế giới hoàn hảo, DB sẽ được xây dựng từ các kịch bản, bao gồm dữ liệu thử nghiệm, như là một phần của quá trình CI của bạn. Ngay cả khi đó không phải là trường hợp, có một DB/nhà phát triển là một mô hình tốt để làm theo. Theo cách đó, các ý tưởng mới có thể được thử trong một sandbox cục bộ mà không ảnh hưởng đến tất cả mọi người, sau khi thay đổi được kiểm tra, nó có thể được kiểm tra.

Management Studio có thể liên kết với điều khiển nguồn, mặc dù tôi không có kinh nghiệm điều này. Chúng tôi luôn theo dõi SP/lược đồ của chúng tôi dưới dạng tệp. Studio quản lý có thể tự động tạo các kịch bản thay đổi, rất hữu ích, vì việc thả/tạo lại bảng có thể quá nặng đối với bất kỳ bảng nào có dữ liệu.

4

Chắc chắn là có. Sau đó, câu hỏi sẽ trở thành cách bạn lưu trữ chúng trong kiểm soát nguồn. Bạn có thả và tạo lại quy trình được lưu trữ hoặc chỉ thay đổi, bạn có thêm quyền ở cuối tập lệnh hoặc trong một tập lệnh riêng biệt không. Đã có một bài đăng trên Coding Horror một thời gian trước về chủ đề mà tôi thấy thú vị. Is Your Database Under Version Control?

0

SQL procs cũng chắc chắn cần sự bảo mật/lợi ích giống như kiểm soát phiên bản như phần còn lại của mã trong dự án.

4

Tôi khuyên bạn nên lưu trữ chúng. Bạn không bao giờ biết khi nào bạn cần khôi phục, hoặc đào sâu vào logic bạn có thể đã xóa.

Đây là cách tốt để dễ dàng lấy Procs đã lưu vào các tệp mà bạn có thể ném vào bất kỳ điều khiển nguồn nào bạn muốn ..

Stored Procedures to .sql files

7

Get your database under version control. Kiểm tra loạt bài đăng của Scott Allen.

Khi nói đến kiểm soát phiên bản, cơ sở dữ liệu thường là công dân thứ hai hoặc thậm chí thứ ba. Từ những gì tôi đã thấy, các nhóm sẽ không bao giờ nghĩ đến việc viết mã mà không cần kiểm soát phiên bản trong một triệu năm - và đúng như vậy-- bằng cách nào đó có thể hoàn toàn không biết gì về nhu cầu kiểm soát phiên bản xung quanh cơ sở dữ liệu quan trọng mà ứng dụng của họ dựa vào. Tôi không biết làm thế nào bạn có thể tự gọi mình là kỹ sư phần mềm và duy trì khuôn mặt thẳng thắn khi cơ sở dữ liệu của bạn không nằm dưới mức kiểm soát nguồn nghiêm ngặt giống như phần còn lại của mã của bạn. Đừng để điều này xảy ra với bạn. Nhận cơ sở dữ liệu của bạn dưới sự kiểm soát phiên bản.

23

TÍCH CỰC TUYỆT VỜI KHÔNG CÓ CÂU HỎI KHÔNG CÓ NGOẠI TỆ TRONG TẤT CẢ CÁC TRẢ LỜI QUA ĐẠI HỌC CÓ!

+3

sooo ... những gì bạn đang nói là bạn nghĩ đó là một ý tưởng tốt? :) – kemiller2002

+0

.. không đặt quá tốt một điểm trên đó. – ConcernedOfTunbridgeWells

+0

Nhưng bạn có cảm thấy mạnh mẽ theo cách này hay cách khác không? :) – NTDLS

0

Như những người khác đã nói, có họ nên.

Tôi không biết cách dễ dàng để làm điều này với SQL Server Management Studio, nhưng nếu bạn cũng sử dụng Visual Studio, dự án cơ sở dữ liệu là một cách tuyệt vời để quản lý việc này.

1

Tuyệt đối. Tích cực.

Một bộ SP là giao diện, có khả năng được sửa đổi thường xuyên hơn thay đổi cấu trúc. Và vì SP có chứa logic nghiệp vụ, các thay đổi phải được lưu trữ trong điều khiển phiên bản để theo dõi các sửa đổi và điều chỉnh logic.

Lưu trữ các điều khiển này trong phiên bản là một triệu chứng của sự trưởng thành của tổ chức ở cấp mã hóa và là phương pháp hay nhất.

4

Lưu trữ các thủ tục được lưu trữ là một ý tưởng tuyệt vời. Đó là một nỗi đau mặc dù. Chỉ cần làm thế nào để bạn có được tất cả những thứ đó vào lật đổ? Bạn có thể tự làm điều đó, nhưng sau đó tẻ nhạt của nó và bạn kết thúc không làm điều đó cả.

Tôi sử dụng công cụ từ subsonic project.

sonic.exe version /server servername /db databasename /out outputdirectory 

Lệnh này lưu mọi thứ vào 2 tệp văn bản. Một chứa lược đồ cơ sở dữ liệu, procs được lưu trữ, tài khoản người dùng, ràng buộc và khóa chính. Cái còn lại chứa dữ liệu.

Bây giờ bạn có hai tệp này, bạn có thể sử dụng subversion (cvs, source safe) để di chuyển nó vào kiểm soát nguồn.

Thông tin khác cho using The Command Line Tool (SubCommander)

2

SQL là mã. Tất cả mã đều thuộc quyền kiểm soát mã nguồn.

Đó là tất cả.

+0

Nếu bạn không thể giải thích nó đơn giản, bạn không hiểu nó đủ tốt. Einstein – SheldonH

0

Nếu bạn không sử dụng quản lý tài sản cùng với kiểm soát nguồn, sau đó tôi nói ném tất cả mọi thứ trong kiểm soát nguồn. Hình ảnh, tài liệu từ, toàn bộ shebang. Không thể mất nó, luôn có thể đảo ngược bất kỳ thay đổi nào đối với nó và nếu máy bị hỏng - không có gì bị mất.

1

Chắc chắn nhất.

Các vấn đề liên quan