hôm bữa có cái thread hỏi về cách triển khai 1 ứng dụng có sử dụng database SQL server lên máy khác, nhớ hồi nhỏ đi học cũng đau đầu về vấn đề này nên viết 1 cái hướng dẫn nho nhỏ dành cho các bạn.
các bước thực hiện :
Trên máy của bạn
1. chuẩn bị csdl dữ liệu của bạn (ở đây Long dùng database Northwind làm ví dụ)
2. từ giao diện của SQL server management studio click-phải vào tên database trong Object Explorer - Tasks - Generate Script..
3. tick vào "Script all objects in the selected database"
4. bấm "Finish >>|"
5. save đống SQL script do ssms sinh ra thành 1 file, ở đây long đặt tên là longtth_demo.sql
6. bỏ cái file đó vào trong bộ cài .
Trên máy user:
1. mở SQL server management studio, tạo 1 cái database có tên giống như tên trong connectionString
2. run source.
-
mở rộng vấn đề:
1. làm sao để user không cần mở SQL server management studio lên vẫn deploy được (máy user chỉ cần có cài SQL server )
2. làm sao để user có thể tùy ý chọn 1 tên database nào đó họ thích chứ không cần quan tâm thằng coder nó đặt tên database là gì
Visual C# Code:
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.IO;
  5. using System.Text.RegularExpressions;
  6. using System.Collections.Generic;
  7. namespace deploy {
  8.     class Program {
  9.         static void Main() {
  10.             //lấy dữ liệu từ file .sql
  11.             string script = File.ReadAllText(@"D:\longtth_demo.sql");
  12.             // split script on GO command
  13.             IEnumerable<string> commandStrings = Regex.Split(script, "^\\s*GO\\s*$", RegexOptions.Multiline);
  14.  
  15.             //tạo connection
  16.             string connectionString = "Data Source=(local);Initial Catalog=Nortwind;Integrated Security=SSPI";
  17.             SqlConnection sc = new SqlConnection(connectionString);
  18.             sc.Open();
  19.             //cứ mỗi dòng trong file .sql kia, thì thực hiện executeNonQuery 1 phát
  20.             foreach (string commandString in commandStrings) {
  21.                 if (commandString.Trim() != "") {
  22.                     new SqlCommand(commandString, sc).ExecuteNonQuery();
  23.                 }
  24.             }
  25.             sc.Close();
  26.         }
  27.     }
  28. }
Hình ảnh minh họa: