2012-01-23 33 views
7

OK .. vậy tôi mới tham gia Git/Github sau khi được Visual Source Safe hầu hết sự nghiệp của tôi và đã thấy ánh sáng - yêu thích nó. Vì vậy, tôi đã di chuyển tất cả các dự án .NET của tôi sang tài khoản Github của tôi và cũng muốn quản lý tất cả các cơ sở dữ liệu SQL Server của tôi với Git. Trong tất cả các dự án của tôi, tôi luôn đặt các tệp cơ sở dữ liệu của tôi trong thư mục con/Database, ví dụ, /Databases/MyDatabase.mdf và /Databases/MyDatabase.ldf trong cây nguồn của tôi. Tôi đang theo dõi các tệp này với Git và chúng hiển thị trong Github độc đáo với tất cả phần còn lại của nguồn của tôi.Git và SQL Server MDF Files

Đây là những gì tôi đã mong đợi xảy ra: Tôi dừng SQL Server với NET STOP MSSQLSERVER và tôi kiểm tra một nhánh để Git sẽ kéo xuống các tệp MDF và LDF cho nhánh đó. Khởi động lại SQL Server với NET START MSSQLSERVER và làm bất cứ công việc nào tôi cần làm trên nguồn và cơ sở dữ liệu cho nhánh cụ thể đó. Git sẽ theo dõi các thay đổi của tôi đối với tệp MDF và khi tôi thực hiện một giai đoạn/cam kết/đẩy nó sẽ gửi các thay đổi đó trở lại kho lưu trữ từ xa.

Tôi đã thử điều này bằng cách kéo xuống cơ sở dữ liệu và thêm cột mới vào bảng và thực hiện cam kết. Git nói với tôi rằng không có thay đổi đối với bất kỳ mục nào mà tôi không mong đợi ... Tôi đã thay đổi tệp MDF. Git có thể theo dõi các thay đổi trong một tệp MDF không? Đoán đầu tiên của tôi là có thể bởi vì nó là nhị phân và không phải là văn bản Git có thể gặp rắc rối với nó nhưng tôi tin rằng có thể sử dụng Git để theo dõi các tệp hình ảnh và các mục nhị phân khác để không có vẻ như đó là vấn đề . Bất kỳ ý tưởng? Là nó chỉ là không thể? Tôi có nên thậm chí không cố gắng làm điều này? Cảm ơn trước cho ý kiến ​​của bạn.

+0

Tắt chủ đề; bỏ phiếu để chuyển sang DBA SE. – Yuck

Trả lời

8

Bạn nên đặt thay đổi tệp cơ sở dữ liệu vào bất kỳ điều khiển nguồn nào. Cố gắng tạo/cập nhật các tập lệnh thích hợp và lưu chúng trong điều khiển nguồn - đây là cách thích hợp để theo dõi các thay đổi lược đồ bên trong DB

Nếu bạn đang sử dụng Visual Studio - đây là một điểm tốt để bắt đầu với các dự án cơ sở dữ liệu và máy chủ trong đó. Nhưng đôi khi nó cư xử theo cách kỳ lạ, vì vậy sử dụng một cách thận trọng và nhẹ nhàng

HOẶC bạn có thể sử dụng một số phần mềm thương mại/miễn phí để theo dõi những thay đổi bên trong DB schema và dữ liệu, như RedGate Schema Hãy so sánh hoặc Redgate dữ liệu so sánh

+0

Tôi sẽ chấp nhận câu trả lời/upvote của bạn nếu bạn giải thích tại sao đó là một ý tưởng tồi ... tất cả những gì tôi muốn làm là giữ các phiên bản của các tệp để thay đổi rollback nếu cần thiết trong quá trình phát triển. Tôi không mong đợi để kết hợp một tập tin MDF chi nhánh thành một bậc thầy hoặc bất cứ điều gì - Tôi chỉ muốn kiểm soát phiên bản trên các tập tin - sự khác biệt giữa một .mdf/.ldf và cái gì như, nói, một tập tin Photoshop? Scripting mỗi thay đổi duy nhất tôi thực hiện trong quá trình phát triển ban đầu là một nỗi đau. Tôi sử dụng so sánh SQL và so sánh dữ liệu SQL và chúng là công cụ tuyệt vời để di chuyển các thay đổi lên môi trường (e.g. dev đến qa để prod). –

+2

@ CK1 Ít thay đổi trong lược đồ, mỗi ** mở ** của DB bởi máy chủ sql nguyên nhân tải lại toàn bộ tập tin/đăng nhập vào máy chủ, vì kích thước DB tối thiểu là 4 Mb - điều này có nghĩa là một lượng lớn rác thải. Scripting chỉ thay đổi và lưu chúng để kiểm soát nguồn cung cấp cho bạn lịch sử sạch sẽ và dễ đọc của DB thay đổi –

+0

@ CK1 Bạn có xem xét để chấp nhận bất kỳ câu trả lời? –

1

Bạn đã cân nhắc sử dụng công cụ Kiểm soát nguồn SQL của chúng tôi để theo dõi các thay đổi phát triển. Điều này làm tất cả các 'kịch bản ra' cho bạn đằng sau hậu trường. Nó thực sự sử dụng công cụ SQL Compare dưới mui xe.

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

Như Oleg một cách chính xác chỉ ra, nó có thể theo dõi những thay đổi schema sử dụng SQL So sánh và SQL dữ liệu so sánh, nhưng ở đây tại Red Gate chúng tôi không khuyên bạn làm điều này qua việc duy trì môi trường phát triển của bạn dưới sự kiểm soát nguồn . Lý tưởng nhất là bạn nên làm cả hai. Grant Fritchey đã viết một bài báo tuyệt vời mô tả cách dòng lệnh của SQL Compare có thể được sử dụng với một hệ thống điều khiển nguồn để theo dõi các thay đổi lược đồ. Ông sử dụng SourceGear Vault trong các ví dụ của mình, nhưng các nguyên tắc áp dụng cho bất kỳ hệ thống kiểm soát nguồn nào.

http://www.simple-talk.com/sql/database-administration/auditing-ddl-changes-in-sql-server-databases/

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