Xu Hướng 3/2023 # Hướng Dẫn Generate Script Database Trong Sql Server Và Cách Tạo Lại Database Từ Scritpt Đã Có # Top 12 View | Rafs.edu.vn

Xu Hướng 3/2023 # Hướng Dẫn Generate Script Database Trong Sql Server Và Cách Tạo Lại Database Từ Scritpt Đã Có # Top 12 View

Bạn đang xem bài viết Hướng Dẫn Generate Script Database Trong Sql Server Và Cách Tạo Lại Database Từ Scritpt Đã Có được cập nhật mới nhất trên website Rafs.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

1. Hướng dẫn generate script một database trong Sql Server 2012.

Bước 1: Đăng nhập vào Sql server.

Bước 3: Trong form mới hiện lên các bạn ấn Next:

Bước 4: ở bước này chúng ta sẽ lựa chọn các đối tượng trong database muốn generate ra script.

Có 2 lựa chọn:

– Script entire database and all database objects: sao lưu toàn bộ database.

– Select specific database objects: lựa chọn các đối tượng cần sao lưu trong database.

Nhấn Next để tiếp tục.

Bước 5: trong bước này, mặc định của Sql là sẽ generate cho bạn một database không có dữ liệu và phiên bản khi generate sẽ là phiên bản sql bạn đang dùng.

Để thay đổi thiếp lập mặc định này ta làm như sau:

– Trong khung opition , các bạn tìm đến 2 phần sau:

Script for server version: lựa chọn phiên bản để generate.

Lưu ý: Các phiên bản sql cũ hơn phiên bản bạn chọn để Generate sẽ ko thể chạy được file script này.

Types of data to script: chọn schema and data để lưu cả dữ liệu của database

Nhấn Ok để Quay về form Script Opition

Trong phần file name bạn có thể chọn đường dẫn và tên file

Nhấn Next

Bước 6 : Nhấn Next và đợi chương trình chạy xong.

Cuối cùng nhấn finish

2. Hướng dẫn tạo lại một database từ một file script có sẵn trong Sql Server 2012

2.1. Khi bạn đã có 1 file script ( .sql) thì việc tạo lại database rất đơn giản.

Bước 1: bạn mở file script lên bằng sql server

Bước 2: sửa lại đường dẫn cho phù hợp với đường dẫn trong máy tính của bạn:

Bước 3: Thực hiện execute để insert dữ liệu vào database

Lưu ý: phiên bản Sql Server dùng để chạy script phải bằng hoặc cao hơn phiên bản sql của file script đó.

2.2. Một số lỗi có thể gặp phải khi tạo lại database từ file script

2.2.1. Msg 1801, Level 16, State 3, Line. Database ‘Vinabook’ already exists. Choose a different database name.

Lỗi trên xảy ra khi bạn cố tạo một database đã tồn tại trong sql server. Để có thể tạo lại bạn phải xóa database cũ đi.

2.2.2. Msg 5133, Level 16, State 1 … Directory lookup for the file

Lỗi trên xảy ra do đường dẫn lưu file mdf và ldf của bạn không đúng.

Tag:SQL Server

Lọc Dữ Liệu Trong Excel Theo Database Bằng Sql Vô Cùng Đơn Giản

Đây là bài số #26 trong loạt videos Hướng dẫn VBA trong Excel và ứng dụng của VBA trong công việc

Đã bao giờ các bạn phải xử lý một lượng dữ liệu rất lớn ở trong Excel từ vài chục ngàn cho đến hàng trăm ngàn dòng? Các công cụ filter hay bảng pivot có thể một phần nào xử lý được những công việc trích lọc dữ liệu theo điều kiện, sắp xếp dữ liệu nặng nhọc này trong Excel cho bạn nhưng với tốc độ khá chậm, và đôi khi chúng ta còn có thể gặp trường hợp treo máy tính hoặc Excel ngừng hoạt động bởi vì lượng dữ liệu này quá lớn thậm chí Excel có thể thoát luôn và không thể khôi phục được dữ liệu? Khi tất cả các kĩ thuật xử lý dữ liệu bình thường trong excel đã được thử qua, các bạn có thể nghĩ đến SQL. Vậy SQL là gì và chúng ta sử dụng SQL trong Excel như thế nào? Bài viết và video này sẽ giúp cho các bạn có thêm một công cụ rất hữu dụng nữa để xử lý dữ liệu trong Excel.

SQL là cái gì?

SQL là từ viết tắt tiếng Anh của Structured Query Language, là một ngôn ngữ được phát triển chuyên để truy vấn dữ liệu từ một hệ thống quản trị cơ sở dữ liệu ( Wikipedia).

Nói một cách đơn giản hơn thì SQL sẽ giúp chúng ta lấy dữ liệu từ bảng tính này sang bảng tính khác hoặc SQL sẽ giúp chúng ta lọc dữ liệu theo nhiều điều kiện khác nhau theo cách mà các công cụ truyền thống như Advanced Filter hay Bảng Pivot có thể gặp khó khăn khi xử lý rất nhiều dữ liệu.

Ví dụ về sử dụng SQL trong Excel

Bảng dữ liệu trong Video

Trước khi xử lý bất kì dữ liệu nào, chúng ta cần đi tìm hiểu cấu trúc của bảng dữ liệu ở đây:

Bảng dữ liệu của chúng ta bao gồm 7 cột từ cột A cho đến cột G.

Vùng dữ liệu được lưu là A1:G20000

Mỗi cột chứa một thuộc tính của dữ liệu:

Sử dụng SQL để lọc hay truy cập dữ liệu trong bảng tính

Sau khi xác định được bảng dữ liệu của chúng ta như thế nào, chúng ta có thể sử dụng SQL để truy cập dữ liệu này với những câu lệnh SQL sau:

Truy cập dữ liệu từ bảng tính Excel bằng SQL

Dấu * ở trong câu lệnh này nghĩa là chúng ta muốn dữ liệu của tất cả các cột. Nếu các bạn sử dụng file Excel trong video để thực hiện những câu lệnh SQL này, bạn cần thêm mi_sql vào đằng trước câu lệnh: mi_sql SELECT * FROM [A1:G20000]

Truy cập dữ liệu của một số cột nhất định: chúng ta ghi tên cột ra sau từ khoá SELECT và viết các cột ngăn cách nhau bằng dấu phẩy ,

Lọc dữ liệu bảng tính Excel bằng SQL

Lọc dữ liệu từ bảng tính Excel với 1 điều kiện: Lọc dữ liệu của những đơn hàng từ Hanoi

Câu lệnh SQL trên có nghĩa là: từ vùng dữ liệu A1:G20000, lọc ra những dòng mà cột Region có giá trị là Hanoi

Từ khoá WHERE giúp chúng ta liệt kê điều kiện khi lọc dữ liệu.

Lọc dữ liệu từ bảng tính Excel với nhiều điều kiện: Lọc dữ liệu của những đơn hàng từ Hanoi hoặc Danang

Câu lệnh SQL trên có nghĩa là: từ vùng dữ liệu A1:G20000, lọc ra những dòng mà cột Region có giá trị là Hanoi hoặc Danang

Ngoài cách dùng từ khoá OR, chúng ta cũng có thể dùng từ khoá IN và câu lệnh SQL sẽ như sau:

Lọc dữ liệu của những đơn hàng bán sản phẩm Pencil từ Hanoi

Câu lệnh SQL trên có nghĩa là: từ vùng dữ liệu A1:G20000, lọc ra những dòng mà cột Region có giá trị là Hanoi và cột Item có giá trị là Pencil.

Lọc dữ liệu của những đơn hàng bán sản phẩm Pencil từ Hanoi và người bán là Jones

Lọc dữ liệu của những đơn hàng bán sản phẩm có đơn giá (Unit Cost) nhỏ hơn hoặc bằng $ 8.99

Lưu ý: Chúng ta có thể thấy được trong ví dụ này, tên cột của bảng tính này là “Unit Cost” có dấu cách ở trong. Tốt nhất để tránh xảy ra lỗi khi truy vấn dữ liệu thì chúng ta không nên viết tên cột có dấu cách hoặc kí tự đặc biệt (có nghĩa là không viết tên cột bằng tiếng Việt có dấu). {. :notice}

Lọc dữ liệu của những đơn hàng bán sản phẩm có đơn giá (Unit Cost) nhỏ hơn hoặc bằng $8.99 sắp xếp từ mặt hàng có đơn giá đắt nhất đến mặt hàng có đơn giá rẻ nhất

Ở trong ví dụ này, chúng ta có thể thay [Unit Cost] trong ORDER BY [Unit Cost] DESC bằng một cột khác. Nếu kiểu dữ liệu của một cột là dạng chuỗi thì cột đó sẽ được sắp xếp từ Z đến A, nếu kiểu dữ liệu của một cột là dạng số thì cột đó sẽ được sắp xếp nhỏ dần.

Lọc dữ liệu của những đơn hàng bán sản phẩm có đơn giá (Unit Cost) lớn hơn hoặc bằng $8.99 sắp xếp từ mặt hàng có đơn giá rẻ nhất đến mặt hàng có đơn giá đắt nhất

Ở đây, khi chúng ta sử dụng ORDER BY và không ghi DESC như ví dụ trên thì SQL sẽ tự động sắp xếp theo chiều thuận nghĩa là nếu dữ liệu là chuỗi, thì sẽ được sắp xếp từ A đến Z, nếu dữ liệu là số thì sẽ được sắp xếp tăng dần.

Lọc dữ liệu của những đơn hàng bán sản phẩm có đơn giá (Unit Cost) lớn hơn hoặc bằng $4.99 và nhỏ hơn hoặc bằng $15.99

Ngoài ra chúng ta cũng có thể sử dụng từ khoá BETWEEN để lọc dữ liệu trong khoảng giá trị

Hướng Dẫn Cài Đặt Và Cấu Hình Sql Server Express 2012

Bạn có thể download SQLServer Express 2012 Release 2, bao gồm cả công cụ trực quan, tại:

Bạn có thể thấy có nhiều gói lựa chọn:

Gói download

Bao gồm

SQLEXPR_x64_ENU.exe SQLEXPR_x32_ENU.exe

Đây chính là phần mềm SQLServer

SQLManagementStudio_x64_ENU.exe SQLManagementStudio_x86_ENU.exe

Đây là bộ cài công cụ trực quan để quản lý SQLServer (SQL Management Studio)

SQLEXPRWT_x64_ENU.exe SQLEXPRWT_x86_ENU.exe

WT = With Tools Gói này là gộp của phần mềm SQLServer và công cụ trực quan SQL Management Studio

SQLEXPRADV_x64_ENU.exe SQLEXPRADV_x86_ENU.exe

ADV = Advanced Gói này là gộp của phần mềm SQLServer, công cụ trực quan SQL Management Studio và một vài công cụ nâng cao khác.

Trong tài liệu này tôi hướng dẫn bạn cài đặt gói đầy đủ nhất

SQLEXPRADV_x64_ENU.exe

SQLEXPRADV_x32_ENU.exe

Bạn download một trong 2 file trên, tùy thuộc vào máy tính của bạn sử dụng hệ điều hành 32 hay 64bit

Sau khi download thành công:

Chọn tất cả các tính năng.

Bộ cài sẽ kiểm tra một số điều kiện trước khi cài. Nếu tất cả đều tốt nó tự động Next qua bước này.

Tiếp theo bạn lựa chọn chế độ “Mix Mode” điều đó cho phép bạn login vào SQL server theo 2 cách:

Sử dụng Username/password đăng nhập của windows.

Sử dụng username/password của SQLServer

Chờ cho tới khi việc cài đặt hoàn tất. Và start lại máy tính sau khi cài đặt hoàn tất.

Đây là việc quan trọng các cấu hình này cho phép bạn kết nối vào cơ sở dữ liệu từ một máy tính khác trong mạng LAN.

Chú ý: Sau khi cài đặt xong bạn thấy có cả các Menu của SQLServer 2008, 2010 được tạo ra, điều này không ngạc nhiên gì cả.

Vào chức năng:

SQL Server Configuration Management

Chức năng này cho phép bạn cấu hình để có thể từ một máy tính khác truy cập vào SQL Server thông qua IP hoặc Server name.

Bạn cần Start service: SQL Server Browser. Nhấn phải chuột vào nó chọn Property.

Chuyển chế độ Start service sang Automatic (tự động).

Sau đó nhấn Start, để khởi động dịch vụ.

Tiếp theo bật TPC/IP cho phép máy tính khác kết nối vào SQL Server thông qua IP.

Tương tự bật: Named Pipes, cho phép máy tính khác kết nối vào SQL Server thông qua Server name.

Tiếp theo, đảm bảo rằng SQL Server của bạn đang chạy dưới chế độ Network Service.

Sau khi cấu hình xong, restart lại service của SQL Server.

Trong trường hợp bạn kết nối vào SQL Server trên máy địa phương, bạn có thể sử dụng dấu chấm, để đại diện cho tên máy.

Đây là hình ảnh sau khi đăng nhập vào SQL Server Management Studio.

Chúng ta tạo thử một database có tên mytestdb.

Create table My_Table ( ID int primary key, Name Varchar(32) ); Insert into My_Table(Id,Name) values (1 , 'Tom Cat');

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.

Đăng Nhập Và Phân Quyền Cơ Bản Trong C# Với Csdl Sql Server

Phân quyền là một trong những bước rất quan trọng sau đăng nhập. Trong bài viết này mình sẽ hướng dẫn bạn cách phân quyền hạn dựa theo nhóm quyền, và tùy chỉnh chức năng của nhóm quyền hạn dựa vào mã định nghĩa thao tác.

Thiết kế cơ sở dữ liệu phân quyền

tbl_user: bảng lưu người dùng bao gồm các thuộc tính như ID, Name, Username, Password. Bảng không có khóa ngoại.

tbl_permision: bảng chứa nhóm quyền hạn. bao gồm các thuộc tính, ID nhóm quyền hạn, tên nhóm quyền hạn, và mô tả nhóm quyền hạn.

tbl_per_relationship: là bảng lưu mối liên hệ giữa người dùng và nhóm quyền hạn. Mục đích của bảng này không phải là để một người dùng có nhiều nhóm quyền mà để không phải truy vấn lại bảng user chứa thông tin nhạy cảm như username và password. Bạn cũng có thể bỏ qua bảng này và liên hệ trực tiếp giữa bảng user và permision luôn, nhưng mình khuyên bạn nên sử dụng thêm bảng này thì tốt hơn.

tbl_permision_detail: là bảng sẽ chứa những quyền hạn cụ thể dành cho nhóm quyền hạn. thật ra trường này bạn có thể bỏ dòng name_action thì nó không cần thiết lắm. Dòng code_action là để khi lập trình mình định nghĩa một thao tác nhất định trong bằng code này ví dụ quyền sửa thì code nó là EDIT chẳng hạn.

Tạo form đăng nhập

Quyền hạn phải được khởi tạo ngay từ đầu khi người dùng đăng nhập. và đây sẽ là bước duy nhất truy vấn đến bảng User chứa username và password của người dùng.

Bây giờ mình sẽ viết hàm login cơ bản để lấy ID người dùng.

Bước 1: Using System.Data.SqlClient;

Bước 2: Tạo hàm lấy ID:

Trước khi tạo hàm, mình cần tạo biến connection đến database bằng đoạn code sau:

SqlConnection con = new SqlConnection(@"Data Source=TECHMACSQLEXPRESS;Initial Catalog=db_QL;Integrated Security=True");

Cách lấy chuỗi connect bạn có thể xem lại bài: Thêm, đọc, sửa, xóa (CRUD) cơ sở dữ liệu SQL Server trong C#

Hàm lấy ID người dùng.

private string getID(string username, string pass) { string id = ""; try { con.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_user WHERE user_name ='"+username+"' and pass='"+pass+"'",con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); if(dt != null) { foreach (DataRow dr in dt.Rows) { id = dr["id_user"].ToString(); } } } catch (Exception) { MessageBox.Show("Lỗi xảy ra khi truy vấn dữ liệu hoặc kết nối với server thất bại !"); } finally { con.Close(); } return id; }

Code đăng nhập

public static string ID_USER = "";

và đoạn code cụ thể.

{ ID_USER = getID(txt_username.Text, txt_pass.Text); if (ID_USER != “”) { frm_main fmain = new frm_main(); fmain.Show(); this.Hide(); } else { MessageBox.Show(“Tài khoảng và mật khẩu không đúng !”); } }

Với cách làm trên mình không mã hóa mật khẩu và tên đăng nhập, tuy nhiên nếu làm dự án thực tế bạn không nên bỏ qua bước này. Bạn có thể xem bài hướng dẫn mã hóa mật khẩu 1 chiều với MD5 trong C# để biết rõ về cách làm này.

Kiểm tra đăng nhập

Bây giờ mình thêm dữ liệu vào cơ sở dữ liệu một user như sau.

private void frm_main_Load(object sender, EventArgs e) { MessageBox.Show("Xin chào User có ID là: " + frm_login.ID_USER); }

Bây giờ thì run lên và thử đăng nhập thử.

Phân quyền trong C#

Như vậy là mình đã lấy được ID của người dùng khi đăng nhập. Bây giờ mình sẽ truy vấn để lấy các quyền hạn để phân quyền cho người dùng.

Tiếp theo mình sẽ tạo một hàm để truy vấn lấy ID nhóm quyền hạn như sau:

SqlConnection con = new SqlConnection(@"Data Source=TECHMACSQLEXPRESS;Initial Catalog=db_QL;Integrated Security=True"); private string id_per (string id_user) { string id = ""; try { con.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_per_relationship WHERE id_user_rel ='" + id_user + "'", con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); if (dt != null) { foreach (DataRow dr in dt.Rows) { if (dr["suspended"].ToString() == "False") { id = dr["id_per_rel"].ToString(); } } } } catch (Exception) { MessageBox.Show("Lỗi xảy ra khi truy vấn dữ liệu hoặc kết nối với server thất bại !"); } finally { con.Close(); } return id; }

Hàm trên mình có sử dụng thêm một lệnh if để kiểm tra trường suspended để xem quyền hạn này của người dùng này có bị đình chỉ không, nếu không thì mới lấy ID quyền hạn ra.

Thêm vào một nút button và viết một câu lệnh để kiểm tra kết quả như sau:

{ MessageBox.Show(“id của nhóm quyền đó là:”+ id_per(frm_login.ID_USER)); }

Trước khi kiếm tra mình phải thêm dữ liệu vào. Theo csdl của mình mình sẽ thêm vào 2 bảng như sau

Kết quả kiểm tra

Lấy chi tiết quyền hạn của nhóm quyền

Sau khi có ID nhóm quyền, đây là lúc mình sẽ lấy chi tiết những quyền được cấp cho nhóm này bằng đoạn code sau:

{ try { con.Open(); SqlCommand cmd = new SqlCommand(“SELECT * FROM tbl_permision_detail WHERE id_per ='” + id_per + “‘”, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); if (dt != null) { foreach (DataRow dr in dt.Rows) { termsList.Add(dr[“code_action”].ToString()); } }

} catch (Exception) { MessageBox.Show(“Lỗi xảy ra khi truy vấn dữ liệu hoặc kết nối với server thất bại !”); } finally { con.Close(); } return termsList; }

Bây giờ mình sẽ thêm một mẫu csdl như sau:

Bây giờ thì mình sẽ tạo một hàm để trả về giá trị True hoặc False khi có yêu cầu quyền hạn.

Trước khi thực hiện bạn cần tạo ra một biến list dùng chung list_detail để lưu những code_acction mà csdl trả về. Sau đó trong hàm load form bạn gán biến này vào lệnh gọi hàm list_per(id_per(frm_login.ID_USER)); ở đây mình gọi lần 2 hàm lồng nhau. Câu lệnh cụ thể như sau:

private void frm_main_Load(object sender, EventArgs e) { list_detail = list_per(id_per(frm_login.ID_USER)); }

Làm như thế này thì mình sẽ không mất công truy vấn trở lại, hàm list_detail sẽ giữ các code_action giúp mình kiểm tra khi cần nhanh chóng hơn.

Đã có danh sách quyền hạn của người đó, bây giờ sử dụng như thế nào.

Mình sẽ tạo ra một hàm nữa, hàm này sẽ cho phép truyền vào code_action, và duyệt trong mãng để kiểm tra, sau đó trả về giá trị boolean (true,false). Hàm này mình viết như sau:

private Boolean checkper(string code) { Boolean check = false; foreach (string item in list_detail) { if(item==code) { check = true; } } return check; }

{ if (checkper(“EDIT”) == true) { MessageBox.Show(“có quyền”); } else { MessageBox.Show(“Bạn không có quyền”); } }

Cập nhật thông tin chi tiết về Hướng Dẫn Generate Script Database Trong Sql Server Và Cách Tạo Lại Database Từ Scritpt Đã Có trên website Rafs.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!