Khi phát triển một ứng dụng có nhiều quy trình được lưu trữ, bạn có nên lưu trữ chúng trong một số loại hệ thống phiên bản nguồn (chẳng hạn như nguồn an toàn, TFS, SVN) không? Nếu vậy, tại sao? Và có một cách thuận tiện kết thúc trước để làm điều này với SQL Server Management Studio?Bạn có nên lưu trữ các thủ tục lưu trữ SQL trong Kiểm soát nguồn không?
Trả lời
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.
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.
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
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
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.
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?
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.
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 ..
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.
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Ó!
sooo ... những gì bạn đang nói là bạn nghĩ đó là một ý tưởng tốt? :) – kemiller2002
.. không đặt quá tốt một điểm trên đó. – ConcernedOfTunbridgeWells
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
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.
Chắc chắn bạn nên làm như vậy.
Trong MS SQL 2008
, bạn có thể làm điều đó right from Management Studio.
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.
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)
SQL là mã. Tất cả mã đều thuộc quyền kiểm soát mã nguồn.
Đó là tất cả.
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
Có các phương pháp trong SMO để tạo tập lệnh nếu bạn muốn mã công cụ tạo tập lệnh của riêng mình.
http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated
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.
Chắc chắn nhất.
- 1. Gọi thủ tục lưu trữ từ một thủ tục lưu trữ SQL Server
- 2. Lưu trữ thủ tục T-SQL Nếu kiểm tra boolean
- 3. Mẫu lưu trữ với các thủ tục được lưu trữ
- 4. Gọi thủ tục lưu trữ trong một thủ tục được lưu trữ trong MySQL
- 5. thủ tục lưu trữ trả về không có gì
- 6. WebMatrix và lưu trữ Thủ tục
- 7. Nơi tìm thủ tục lưu trữ msdb.dbo.sp_send_dbmail trong SQL Server
- 8. Thủ tục lưu trữ trong phpMyAdmin
- 9. lưu trữ thủ tục trả về varchar
- 10. Di chuyển các thủ tục được lưu trữ bằng Flyway
- 11. Thủ tục lưu trữ và quyền - Có đủ EXECUTE không?
- 12. Thủ tục lưu trữ Vs. Xem
- 13. T-SQL Bỏ qua Thủ tục lưu trữ
- 14. SQL Server lưu trữ mã thủ tục được lưu trữ ở đâu?
- 15. Gọi một thủ tục lưu trữ python
- 16. UNION có điều kiện trong thủ tục được lưu trữ
- 17. Thủ tục lưu trữ SQL Server Thư mục/nhóm
- 18. Tham số thủ tục lưu trữ SQL Server
- 19. Microsoft SQL Server - Ai đã tạo thủ tục lưu trữ?
- 20. thủ tục lưu trữ t-sql tạo tập lệnh
- 21. SELECT đối với thủ tục được lưu trữ SQL Server
- 22. Thủ tục lưu trữ SQL Server để gửi email
- 23. Các thủ tục lưu trữ Mysql Kiểu cột Tham chiếu
- 24. Chức năng so với các thủ tục được lưu trữ
- 25. Lưu trữ SQL Server Thủ tục lưu giữ giá trị trả về trong T-SQL
- 26. Thủ tục lưu trữ MySQL Quyền
- 27. IF/ELSE Thủ tục lưu trữ
- 28. Làm thế nào để lưu một thủ tục lưu trữ?
- 29. Thủ tục lưu trữ không đồng bộ Các cuộc gọi
- 30. Danh sách các thủ tục được lưu trữ từ Bảng
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. –