Tôi đã cập nhật bài đăng gốc của mình bên dưới để phản ánh những thay đổi trong phiên bản mới nhất của SQL Source Control (3.0) và SQL Compare (10.1).
Vì câu hỏi này đã được hỏi hơn một năm trước, câu trả lời của tôi có thể không hữu ích cho bạn, nhưng đối với những người khác hiện đang đánh giá SSC, tôi nghĩ rằng tôi sẽ ném vào hai xu của mình. Chúng tôi mới bắt đầu sử dụng SQL Source Control (SSC) và nhìn chung tôi khá hài lòng với nó cho đến nay. Tuy nhiên, nó có một số điều kỳ quặc, đặc biệt nếu bạn đang làm việc trong môi trường cơ sở dữ liệu dùng chung (trái ngược với mọi nhà phát triển làm việc cục bộ) và đặc biệt làm việc trong môi trường kế thừa nơi các đối tượng trong cùng một cơ sở dữ liệu được phân chia lộn xộn giữa các nhóm phát triển.
Để cung cấp một cái nhìn tổng quan ngắn gọn về cách chúng tôi đang sử dụng sản phẩm trong tổ chức của mình, chúng tôi đang làm việc trong một môi trường chia sẻ, nơi tất cả chúng tôi thực hiện thay đổi đối với cùng một cơ sở dữ liệu phát triển, vì vậy chúng tôi đã gắn cơ sở dữ liệu được chia sẻ vào kho lưu trữ kiểm soát nguồn. Mỗi nhà phát triển chịu trách nhiệm thực hiện các thay đổi đối với các đối tượng trong cơ sở dữ liệu thông qua SQL Server Management Studio (SSMS) và khi chúng hoàn tất, họ có thể cam kết các thay đổi của mình đối với kiểm soát nguồn. Khi chúng ta sẵn sàng triển khai sang dàn, bản dựng chủ (tôi) hợp nhất nhánh phát triển của mã cơ sở dữ liệu với nhánh chính (dàn) và sau đó chạy SQL So sánh bằng cách sử dụng phiên bản kho lưu trữ nhánh chính của cơ sở dữ liệu làm nguồn và hoạt động. cơ sở dữ liệu dàn làm mục tiêu và SQL Compare tạo các tập lệnh cần thiết để triển khai các thay đổi được thực hiện đối với môi trường dàn dựng. Từ giai đoạn triển khai đến sản xuất hoạt động theo cách tương tự. Một điểm quan trọng khác cần lưu ý là, do chúng tôi đang chia sẻ cùng một cơ sở dữ liệu với các nhóm phát triển khác, chúng tôi sử dụng một tính năng tích hợp sẵn của SSC cho phép bạn tạo bộ lọc trên các đối tượng cơ sở dữ liệu theo tên, loại, v.v. Chúng tôi theo cách thủ công thiết lập bộ lọc trên các đối tượng của nhóm cụ thể của chúng tôi, loại trừ tất cả các đối tượng khác, để chúng tôi không vô tình thực hiện các thay đổi của nhóm phát triển khác khi chúng tôi triển khai.
Vì vậy, nói chung, nó là một sản phẩm khá đơn giản để thiết lập và sử dụng và nó thực sự tuyệt vời vì bạn luôn làm việc với các đối tượng trực tiếp trong SSMS, trái ngược với các tệp kịch bản bị ngắt kết nối được lưu trữ trong một kho lưu trữ nguồn riêng biệt có nguy cơ bị mất đồng bộ . Nó cũng rất hay vì SQL Compare tạo các tập lệnh triển khai cho bạn, vì vậy bạn không phải lo lắng về việc đưa ra các lỗi như khi bạn tự tạo các tập lệnh. Và vì SQL Compare là một sản phẩm rất ổn định và trưởng thành, bạn có thể cảm thấy khá tự tin rằng nó sẽ tạo ra các tập lệnh phù hợp cho bạn.
Tuy nhiên, với điều đó đã được nói, đây là một số điều kỳ quặc mà tôi đã gặp phải cho đến nay:
- SSC khá độc đáo về mặt giao tiếp với máy chủ db để theo dõi các mục cơ sở dữ liệu không đồng bộ với kho lưu trữ kiểm soát nguồn. Nó thăm dò mỗi vài mili giây và nếu bạn thêm nhiều nhà phát triển, tất cả đều làm việc với cùng một cơ sở dữ liệu bằng cách sử dụng SSC, bạn có thể tưởng tượng rằng dba của chúng tôi không vui lắm. May mắn thay, bạn có thể dễ dàng giảm tần suất thăm dò ý kiến của mình xuống mức nào đó dễ chấp nhận hơn, mặc dù phải hy sinh các thông báo trực quan đáp ứng về thời điểm các đối tượng đã được thay đổi.
- Sử dụng tính năng lọc đối tượng, bạn không thể dễ dàng biết được khi nhìn vào các đối tượng trong SSMS đối tượng nào được đưa vào bộ lọc của bạn. Vì vậy, bạn không biết chắc liệu một đối tượng có được kiểm soát nguồn hay không, không giống như trong Visual Studio, nơi các biểu tượng được sử dụng để biểu thị các đối tượng được kiểm soát nguồn.
- GUI lọc đối tượng rất khó hiểu. Do thực tế là chúng tôi đang làm việc trong môi trường cơ sở dữ liệu kế thừa, hiện không có sự phân tách rõ ràng giữa các đối tượng mà nhóm của chúng tôi sở hữu và các đối tượng thuộc sở hữu của các nhóm khác, vì vậy để tránh chúng tôi vô tình thực hiện / triển khai các thay đổi của nhóm khác , chúng tôi đã thiết lập một lược đồ lọc để bao gồm rõ ràng từng đối tượng cụ thể mà chúng tôi sở hữu. Như bạn có thể tưởng tượng, điều này trở nên khá phức tạp và khi GUI để chỉnh sửa bộ lọc được thiết lập để nhập từng đối tượng một, nó có thể trở nên khá khó khăn, đặc biệt là cố gắng thiết lập môi trường của bạn lần đầu tiên (tôi đã kết thúc đang viết đơn xin việc này). Trong tương lai, chúng tôi sẽ tạo một lược đồ mới cho ứng dụng của mình để hỗ trợ lọc đối tượng tốt hơn (dù sao cũng là một phương pháp tốt hơn).
- Sử dụng mô hình cơ sở dữ liệu được chia sẻ, các nhà phát triển được phép thực hiện bất kỳ thay đổi nào đang chờ xử lý đối với cơ sở dữ liệu được kiểm soát nguồn, ngay cả khi những thay đổi đó không phải của họ. SSC đưa ra cảnh báo cho bạn nếu bạn cố gắng kiểm tra một loạt các thay đổi mà những thay đổi này có thể không phải của bạn mà là do bạn tự thực hiện. Tôi thực sự thấy rằng đây là một trong những "câu hỏi kỳ quặc" nguy hiểm nhất của SSC.
- SQL Compare hiện không thể chia sẻ các bộ lọc đối tượng do SSC tạo, vì vậy bạn sẽ phải tạo một bộ lọc phù hợp theo cách thủ công trong SQL Compare, vì vậy có nguy cơ những bộ lọc này không đồng bộ hóa. Tôi vừa kết thúc việc cắt và dán các bộ lọc từ tệp bộ lọc SSC bên dưới vào bộ lọc dự án So sánh SQL để tránh đối phó với GUI lọc đối tượng khó hiểu. Tôi tin rằng phiên bản tiếp theo của SQL Compare sẽ cho phép nó chia sẻ bộ lọc với SSC, vì vậy ít nhất vấn đề này chỉ là một vấn đề ngắn hạn. (LƯU Ý:Sự cố này đã được giải quyết trong phiên bản SQL Compare mới nhất. SQL Compare hiện có thể sử dụng các bộ lọc đối tượng do SSC tạo.)
- So sánh SQL cũng không thể so sánh với kho lưu trữ cơ sở dữ liệu SSC khi được khởi chạy trực tiếp. Nó phải được khởi chạy từ bên trong SSMS. Tôi tin rằng phiên bản tiếp theo của SQL Compare sẽ cung cấp chức năng này, vì vậy đây lại là một vấn đề ngắn hạn khác. (LƯU Ý:Sự cố này đã được giải quyết trong phiên bản SQL So sánh mới nhất.)
- Đôi khi SQL Compare không thể tạo các tập lệnh thích hợp để đưa cơ sở dữ liệu đích từ trạng thái này sang trạng thái khác, thường là trong trường hợp bạn đang cập nhật giản đồ của các bảng hiện có không có sản phẩm nào, vì vậy bạn hiện phải viết kịch bản thủ công và tự quản lý quy trình. May mắn thay, điều này sẽ được giải quyết thông qua "tập lệnh di chuyển" trong bản phát hành tiếp theo của SSC và từ việc xem xét phiên bản phát hành sớm của sản phẩm, có vẻ như việc triển khai tính năng mới này đã được suy nghĩ và thiết kế tốt. (LƯU Ý:Chức năng tập lệnh di chuyển đã chính thức được phát hành. Tuy nhiên, chức năng này hiện không hỗ trợ phân nhánh. Nếu bạn muốn sử dụng tập lệnh di chuyển, bạn sẽ cần chạy sql so sánh với nhánh mã phát triển ban đầu của mình ... một trong đó bạn đã kiểm tra các thay đổi của mình ... điều này khá rắc rối và đã buộc tôi phải sửa đổi quy trình xây dựng của mình theo cách ít lý tưởng hơn để khắc phục hạn chế này. Hy vọng rằng vấn đề này sẽ được giải quyết trong bản phát hành trong tương lai.)
Nhìn chung, tôi khá hài lòng với sản phẩm và khả năng phản hồi của Redgate đối với phản hồi của người dùng cũng như định hướng mà sản phẩm đang thực hiện. Sản phẩm rất dễ sử dụng và được thiết kế tốt, và tôi cảm thấy rằng trong một hoặc hai phiên bản tiếp theo, sản phẩm có thể sẽ cung cấp cho chúng tôi hầu hết những gì chúng tôi cần, nếu không phải là tất cả.