SSDT – Quản lý script với Database Project trong Visual Studio

Trong bài viết trước (SSDT – Quản lý SQL Server Object từ Visual Studio với SQL Server Object Explorer), mình đã demo cho bạn cách làm việc trực tiếp với csdl với SSDT sử dụng SQL Server Object Explorer từ Visual Studio sử dụng Connected Database Development.

ssdt_visualstudio_2015_29

Trong thực tế, chúng ta cần những giải pháp tốt hơn để kiểm soát database script. Chẳng hạn, trong trường hợp nếu cần rollback lại một phiên bản trước đó theo yêu cầu nghiệp vụ, hay khi bạn commit trực tiếp vào csdl thì bạn không thể nào kiểm tra lại những thay đổi nào mà bạn đã thực hiện và nếu có sai sót xảy ra thì rất khó để ‘undo’, nếu bạn muốn chia sẻ database script bạn đã chỉnh sửa với team member thì phải làm thế nào… Để đáp ứng các nhu cầu đó, Visual Studio cung cấp một loại project đặc biệt mang tên SQL Server Database Project để giúp lập trình viên quản lý database script, quản lý trên source control với TFS chẳng hạn.

Tạo Database Project với Visual Studio

Trong demo này, bạn tạo 1 blank solution với tên gọi tùy ý, trong demo này mình đặt tên là TestDatabaseProjectSolution.

ssdt_visualstudio_2015_30

Tiếp theo bạn click phải vào solution vừa tạo và chọn Add -> New Project. Một cửa sổ hiện lên, bạn chọn loại project là SQL Server ở khung bên trái, chọn SQL Server Database Project và đặt tên project theo ý của bạn, trong demo này là TestDatabseManagement.

ssdt_visualstudio_2015_31

 

Khi đó, trong cửa sổ SQL Server Object Explorer xuất hiện Database Project mà bạn mới vừa tạo.

ssdt_visualstudio_2015_32

Với loại project này, Visual Studio cung cấp các tùy chọn thêm mới đặc biệt như Table, Stored Procedure, Script…

ssdt_visualstudio_2015_33

Import database vào project

Trong demo ở bài viết trước (link ở đầu bài), chúng ta đã tạo ra csdl mang tên TestDatabase, trong demo này chúng ta sẽ thực hiện import csdl đó vào project chúng ta vừa tạo. Bạn click phải vào project -> Import -> Database

ssdt_visualstudio_2015_34

Một cửa sổ hiện lên, trong đó phần Target Project bị ‘disable’ đi vì chúng ta đang import csdl vào project đã xác định.

ssdt_visualstudio_2015_35

Bạn tiến hành khai báo kết nối và import csdl vào project

ssdt_visualstudio_2015_11

Kết quả sau khi import

ssdt_visualstudio_2015_36

Bây giờ, nếu bạn click phải vào project và chọn Import, bạn sẽ thấy rằng bạn chỉ có thể import script vào project này, 2 lựa chọn đầu tiên bị vô hiệu hóa. Để import 1 database khác, bạn phải tạo 1 database project mới và thực hiện lại quá trình import như trên.

ssdt_visualstudio_2015_37

Ngoài ra, bạn có thể tạo mới database project và import database chỉ trong 1 bước. Cụ thể cách làm như sau: trong SQL Server Object Explorer, bạn chọn database bạn muốn import, trong demo này là TestDatabase, và chọn Create New Project.

ssdt_visualstudio_2015_38

Cừa sổ import sẽ hiện lên và trong trường hợp này phần Target Project được hiển thị, và phần thiết lập kết nối bị vô hiệu hóa đi.

ssdt_visualstudio_2015_39

Bạn tiến hành khai báo thông tin cho project như bạn tạo project thông thường rồi chọn Start đề tiến hành import csdl vào project.

Thêm/Chỉnh sửa database script

Database project vừa tạo ở trên chứa các database script từ database được import và từ đây bạn có thể làm việc dựa trên các script này, và Microsoft gọi đây là Project-Oriented Offline Database Development vì bạn không cần phải kết nối trực tiếp đến database khác với Connected Database Development đã được trình bày ở bài viết trước.

Thêm mới một table bằng cách click phải vào thư mục Tables -> Add -> Table

ssdt_visualstudio_2015_40

Cửa sổ mới hiện lên, bạn đặt tên cho table bạn muốn tạo, trong demo này là CustomerType và chọn Add.

ssdt_visualstudio_2015_41

Kết quả sau khi thêm table: script cho table mới được tạo ra trong Solution Explorer dưới thư mục Tables, Table Designer hiển thị thông tin của table mới vừa tạo và table xuất hiện trong SQL Server Object Explorer.

ssdt_visualstudio_2015_42

Tiếp theo, chúng ta tiến hành đổi tên cột Id thành CustomerTypeId và xác định thuộc tính Identity cho cột này, thêm cột Description vào table này.

ssdt_visualstudio_2015_12

Lưu ý là ở đây bạn sẽ không thấy nút Update bên trong Table Designer như bạn thấy ở bài viết trước.

Tiếp theo, chúng ta sẽ tiến hành thêm khóa ngoại cho bảng Customer.

ssdt_visualstudio_2015_13

Sau khi đã thực hiện một số thay đổi trong script, bây giờ chúng ta sẽ tiến hành cập nhật vào csdl trên SQL Server.

Publish script vào database

Bạn click phải vào project và chọn Publish…

ssdt_visualstudio_2015_43

Một cửa sổ hiện lên, bạn nhấn vào nút Edit để điền thông tin kết nối đến database mà bạn muốn publish

ssdt_visualstudio_2015_45

Một cửa sổ khác hiện lên để bạn điền thông tin kết nối đến database trên SQL Server, click OK để tiếp tục.

ssdt_visualstudio_2015_44

Khi đó, 1 connection string được tạo ra trong ô Target database connection theo những thông tin mà bạn đã khai báo ở trên.

ssdt_visualstudio_2015_47

Nếu bạn muốn có thêm nhiều lựa chọn trước khi publish, bạn click vào nút Advanced… và một cửa sổ khác sẽ hiện lên để bạn lựa chọn

ssdt_visualstudio_2015_46

Khi đã chọn xong các thiết lập cho việc publish, bạn click vào nút Publish để tiến hành. Bên dưới cửa sổ Data Tools Operations hiển thị thông tin và kết quả của quá trình publish trên.

ssdt_visualstudio_2015_48

Ngay lập tức, trong cửa sổ của SQL Server Object Explorer, một kết nối đến database mà bạn đã publish tự động được mở và bạn có thể kiểm tra ngay database đã publish ngay trong cửa sổ này.

ssdt_visualstudio_2015_49

 

Như vậy, với Database project trong Visual Studio, bạn có thể dễ dàng quản lý script (thêm/xóa/sửa), theo dõi (tracking version trên source control) và publish vào database trên SQL Server.

3 thoughts on “SSDT – Quản lý script với Database Project trong Visual Studio

  1. Pingback: Visual Studio Data Tools | Huy Tran's space
  2. Pingback: SSDT – Quản lý SQL Server Object từ Visual Studio | Huy Tran's space

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s