Bài viết này hướng dẫn cách sử dụng tùy chọn thư mục làm việc của điều khiển nguồn để quản lý cơ sở dữ liệu SQL Server.
Trong bài viết này, tôi cũng nhấn mạnh một số lợi ích và hạn chế của việc sử dụng thư mục làm việc so với các tùy chọn có sẵn khác để sử dụng với kiểm soát nguồn.
Hãy để chúng tôi thảo luận một số khái niệm chính trước khi đi sâu vào chi tiết kỹ thuật của bài viết này.
Các khái niệm chính
Kiểm soát nguồn là gì
Kiểm soát nguồn là một hệ thống hoặc (một phần của phần mềm tốt nhất) thực hành theo dõi tất cả các thay đổi trong mã do các nhà phát triển thực hiện.
Tại sao cần Kiểm soát nguồn
Mã ứng dụng do nhà phát triển viết cần được lưu theo thời gian sao cho tất cả các thay đổi được thực hiện bởi bất kỳ nhà phát triển nào không chỉ có thể được truy ngược lại mà còn có thể hoàn nguyên nếu được yêu cầu.
Vì lý do này, mã ứng dụng được đặt dưới sự kiểm soát nguồn để đảm bảo rằng lịch sử của tất cả các thay đổi cùng với các nhận xét được lưu giữ tốt, ngoài ra còn có nhiều lợi ích khác của việc sử dụng kiểm soát nguồn, nằm ngoài phạm vi của bài viết này.
Kiểm soát nguồn so với Kiểm soát phiên bản
Không có sự khác biệt giữa Kiểm soát nguồn và Kiểm soát phiên bản và hầu hết hai thuật ngữ này được sử dụng thay thế cho nhau một cách tự do.
Chúng tôi có đặt Cơ sở dữ liệu dưới sự Kiểm soát Nguồn không
Cũng giống như mã ứng dụng, các đối tượng cơ sở dữ liệu như bảng, dạng xem, thủ tục được lưu trữ, v.v. cũng cần được kiểm soát phiên bản. Tuy nhiên, phương pháp đặt các đối tượng cơ sở dữ liệu dưới quyền kiểm soát nguồn hơi khác và trong một số trường hợp hoàn toàn khác với khi mã ứng dụng được đặt dưới quyền kiểm soát nguồn.
Ví dụ về cơ sở dữ liệu kiểm soát phiên bản
Giả sử bạn tạo một cơ sở dữ liệu mẫu có tên là “Ô tô” theo yêu cầu kinh doanh.
Sau đó, bạn tạo một bảng có tên “Xe” với CarId và CarName để đáp ứng yêu cầu khác.
Khi bạn vắng mặt, một nhà phát triển khác được giao nhiệm vụ thêm CarType vào bảng "Xe hơi".
Anh ấy quyết định xóa CarName cho rằng nó không bắt buộc và thay thế nó bằng CarType cột.
Bạn quay lại sau một thời gian dài và ngạc nhiên khi thấy CarName của bạn cột không chỉ bị thiếu mà còn được thay thế bằng CarType cột.
Bây giờ, bạn không nhớ loại dữ liệu ban đầu và độ dài mà bạn đã chọn cho CarName trừ khi bạn hoàn thành toàn bộ các yêu cầu kinh doanh.
Đợi tí! Sự cố này có thể dễ dàng được giải quyết nếu bạn đã cân nhắc sử dụng kiểm soát nguồn cho cơ sở dữ liệu của mình ngay từ đầu. Sau đó, bạn có thể dễ dàng thấy thay đổi đầu tiên mà bạn đã thực hiện, bao gồm định nghĩa cột và sau đó là thay đổi thứ hai do một nhà phát triển khác thực hiện.
Vì vậy, bạn và nhà phát triển khác ngồi lại với nhau và chạy qua các thay đổi lịch sử được thực hiện đối với cơ sở dữ liệu (đối tượng) bằng cách sử dụng điều khiển nguồn, theo dõi mọi thay đổi do bất kỳ nhà phát triển nào thực hiện trên cơ sở dữ liệu.
Điều này được minh họa như sau:
Sử dụng Kiểm soát Nguồn Quan trọng nhất
Một trong những lý do chính để sử dụng kiểm soát nguồn là có thể duy trì nhiều phiên bản mã cùng một lúc bằng cách tạo các nhánh sau của mã:
- Dev (Nhánh phát triển)
- Kiểm tra (Nhánh thử nghiệm)
- QA (nhánh QA)
- Sản phẩm (Chi nhánh sản xuất)
Chi tiết kỹ thuật của việc tạo các nhánh Dev, Test, QA và Production từ kiểm soát nguồn nằm ngoài phạm vi của bài viết này.
Điều kiện tiên quyết
Bài viết này phù hợp nhất cho những độc giả đáp ứng các yêu cầu sau:
Kiến thức cơ bản về T-SQL
Bạn phải có một số kiến thức T-SQL cơ bản để tạo, truy vấn và sửa đổi các đối tượng cơ sở dữ liệu như bảng, dạng xem và thủ tục được lưu trữ.
Công cụ phát triển cơ sở dữ liệu
Bạn phải cài đặt SSMS (SQL Server Management Studio) hoặc dbForge Studio cho SQL Server trên máy của mình để tạo và quản lý cơ sở dữ liệu cũng như các đối tượng của chúng.
Tính sẵn có của nguồn dữ liệu thư mục làm việc
Mặc dù bất kỳ điều khiển nguồn nào cung cấp tùy chọn thư mục làm việc đều tốt, nhưng bạn nên sử dụng Điều khiển nguồn dbForge để làm theo tất cả các bước của hướng dẫn trong bài viết này.
Kiểm soát nguồn thư mục làm việc
Thư mục làm việc với chức năng hạn chế đối với các đối tượng cơ sở dữ liệu điều khiển phiên bản có thể được sử dụng giống như các hệ thống điều khiển nguồn khác như TFS, Git, v.v.
Một thư mục làm việc chỉ chứa các tệp kịch bản SQL được sử dụng để tạo và quản lý các đối tượng cơ sở dữ liệu.
Khi nào sử dụng Thư mục làm việc
Giả sử bạn muốn tạo một cơ sở dữ liệu và các đối tượng liên quan của nó từ đầu nhưng chưa chắc chắn nhóm của bạn sẽ sử dụng kiểm soát nguồn nào cuối cùng. Sau đó, tốt hơn là bắt đầu với tùy chọn kiểm soát nguồn thư mục đang hoạt động.
Một lý do khác có thể là khi bạn chỉ muốn lưu trữ trạng thái hiện tại của cơ sở dữ liệu và không muốn theo dõi các thay đổi lịch sử thì thư mục làm việc là một ứng cử viên tốt để được sử dụng làm điều khiển nguồn.
Giới hạn thư mục làm việc
Thư mục làm việc đến các đối tượng cơ sở dữ liệu kiểm soát phiên bản bị hạn chế về mặt giữ phiên bản mới nhất của cơ sở dữ liệu và các đối tượng của nó và không có cách nào để theo dõi các thay đổi hoặc hoàn nguyên chúng.
Vì vậy, bạn phải cẩn thận khi sử dụng Thư mục làm việc làm tùy chọn kiểm soát nguồn của mình vì nó không thể hiển thị cho bạn tất cả các thay đổi được thực hiện đối với cơ sở dữ liệu và các đối tượng của nó theo thời gian.
Hướng dẫn:Liên kết Cơ sở dữ liệu với Thư mục Làm việc
Hãy để chúng tôi thực hiện các bước để liên kết cơ sở dữ liệu của bạn với một thư mục đang hoạt động bằng cách sử dụng điều khiển nguồn.
Yêu cầu để Thêm Sách và Loại Sách
Bạn đã nhận được các yêu cầu nội bộ để tạo cơ sở dữ liệu thử nghiệm có tên “SQLBookShopV2” chứa hai bảng sau:
- Sách
- BookType
Tại thời điểm này, cơ sở dữ liệu không nhất thiết yêu cầu điều khiển nguồn và việc theo dõi tất cả các thay đổi đã thực hiện là điều không quan trọng.
Kiểm tra các yêu cầu
Thông thường, bạn nên kiểm tra kỹ các yêu cầu trước khi sử dụng một thư mục làm việc. Thư mục đang làm việc là phù hợp nhất nếu bạn được yêu cầu tạo cơ sở dữ liệu với các yêu cầu sau:
- Cơ sở dữ liệu thử nghiệm hoặc nguyên mẫu cơ sở dữ liệu là bắt buộc
- Lịch sử thay đổi (các) cơ sở dữ liệu là không bắt buộc
- Quyết định cuối cùng sẽ sử dụng quyền kiểm soát nguồn nào vẫn chưa được quyết định
Thiết lập Thư mục Làm việc
Bước đầu tiên là dành một thư mục nơi các tập lệnh cơ sở dữ liệu thử nghiệm của bạn sẽ cư trú sau khi bạn bắt đầu kiểm tra mã cơ sở dữ liệu của mình vào thư mục làm việc.
Tạo một thư mục mới có tên “SQLBookShopV2 Scripts” trong C Drive.
Thiết lập cơ sở dữ liệu mẫu SQLBookShopV2
Mở dbForge Studio cho SQL Server và từ menu Cơ sở dữ liệu, hãy nhấp vào “Cơ sở dữ liệu mới”:
Nhập “SQLBookShopV2” vào tên của cơ sở dữ liệu và nhấp vào nút “Áp dụng thay đổi” ở cuối cửa sổ:
Liên kết Cơ sở dữ liệu với Thư mục Làm việc
Tốt hơn là bạn nên liên kết cơ sở dữ liệu với điều khiển nguồn ngay sau khi tạo.
Nhấp chuột phải vào cơ sở dữ liệu (SQLBookShopV2) và chọn mục menu Source Control à Link Database to Source Control:
Định vị thư mục làm việc đã tạo trước đó để liên kết nó với cơ sở dữ liệu:
Bạn có thể chọn mô hình phát triển cơ sở dữ liệu mong muốn của mình. Chúng tôi đang chọn mô hình phát triển cơ sở dữ liệu dùng chung:
Kiểm tra biểu tượng điều khiển nguồn nhỏ bên cạnh cơ sở dữ liệu xác nhận rằng cơ sở dữ liệu đã được liên kết thành công với điều khiển nguồn thư mục đang làm việc:
Tạo Bảng Sách
Nhấp chuột phải vào Bảng và sau đó nhấp vào Bảng mới và tạo bảng sách bằng mã sau và áp dụng các thay đổi:
CREATE TABLE SQLBookShopV2.dbo.Book ( BookId INT IDENTITY ,BookTitle VARCHAR(50) NOT NULL ,Notes VARCHAR(200) ,CONSTRAINT PK_Book_BookId PRIMARY KEY CLUSTERED (BookId) ) GO
Thay đổi mã cơ sở dữ liệu cam kết
Vì chúng tôi đã tạo một bảng mới trong cơ sở dữ liệu, nên các thay đổi cục bộ này phải được kiểm soát nguồn chọn để được lưu.
Trình quản lý điều khiển nguồn mở (hiển thị những thay đổi mới nhất sẽ được lưu) bằng cách nhấp chuột phải vào cơ sở dữ liệu rồi nhấp vào Nguồn à Hiển thị Trình quản lý kiểm soát nguồn
Nhấp vào Cam kết để kiểm tra Kiểm soát nguồn thư mục làm việc:
Kiểm tra thư mục làm việc
Đi tới thư mục làm việc của bạn và xem đối tượng bảng được lưu ở đó là kết quả của lần cam kết mới nhất:
Tạo bảng BookType
Tạo một bảng BookType khác bằng mã sau:
CREATE TABLE SQLBookShopV2.dbo.BooKType ( BookTypeId INT IDENTITY ,Name VARCHAR(50) NULL ,Detail VARCHAR(200) NULL ,CONSTRAINT PK_BooKType_BookTypeId PRIMARY KEY CLUSTERED (BookTypeId) ) GO
Thêm bảng vào kiểm soát nguồn
Thêm bảng mới được tạo vào điều khiển nguồn bằng cách sử dụng cùng một phương pháp như đã đề cập trước đó và sau đó kiểm tra thư mục làm việc để xem cả hai bảng đều ở đó:
Xin chúc mừng! Bạn đã liên kết thành công cơ sở dữ liệu của mình với điều khiển nguồn thư mục đang hoạt động.
Biện pháp phòng ngừa đối với thư mục làm việc
Hãy nhớ rằng một thư mục đang hoạt động ở dạng thuần túy vì điều khiển nguồn giống như một thư mục Windows thông thường và nếu nó bị sửa đổi bên ngoài, nó sẽ không thể nhớ trạng thái mới nhất của nó nữa.
Ví dụ:nếu chúng tôi xóa mã Book.sql khỏi thư mục làm việc và sau đó kiểm tra bất kỳ thay đổi nào bằng Trình quản lý kiểm soát nguồn, chúng tôi sẽ phải thêm lại mã bảng Sách vào Thư mục làm việc.
Trách nhiệm bảo mật thư mục hoạt động nằm trên vai của các nhà phát triển chứ không phải mã nguồn (ở dạng ban đầu) trừ khi bạn tuân thủ nghiêm ngặt giải pháp đã được chứng minh là thành công.
Việc cần làm
Giờ đây, bạn có thể dễ dàng đặt các đối tượng cơ sở dữ liệu của mình bằng cách sử dụng tùy chọn điều khiển nguồn Thư mục Làm việc:
- Vui lòng thử tạo một cơ sở dữ liệu khác bằng cách liên kết Sách bảng với BookType bảng sao cho BookTypeId khóa chính của BookType bảng được chuyển dưới dạng BookTypeId cột khóa ngoại trong Sách bảng sau khi sử dụng điều khiển nguồn thư mục đang hoạt động.
- Vui lòng thử tạo một quy trình được lưu trữ có tên là AddBook để thêm sách mới vào Sách bảng sau khi liên kết cơ sở dữ liệu của bạn với điều khiển nguồn thư mục đang hoạt động.
- Vui lòng thử tạo chế độ xem cơ sở dữ liệu Sách để xem danh sách tất cả sách cùng loại và kiểm tra tất cả các thay đổi đối với kiểm soát nguồn Thư mục làm việc.
Đọc thêm:
Theo dõi thay đổi cơ sở dữ liệu bằng cách sử dụng kiểm soát nguồn thư mục đang làm việc
Công cụ hữu ích:
dbForge Source Control - phần bổ trợ SSMS mạnh mẽ để quản lý các thay đổi trong cơ sở dữ liệu SQL Server trong kiểm soát nguồn.