Cách Tạo Job Trong Sql / Top 1 # Xem Nhiều Nhất & Mới Nhất 1/2023 # Top View | Rafs.edu.vn

Cách Tạo Job Trong Sql Server Và Cách Tạo Bảng Động Định Kỳ

Như chúng ta đã biết đối với các hệ thống Logging thì dữ liệu luôn được cập nhật hàng tháng, hàng ngày vì vậy đòi hỏi CSDL phải tương thích có nghĩa là Log trong tháng nào thì hệ thống sẽ Insert vào tháng đó tương ứng tráng việc Insert nhiều trong cùng 1 bảng dẫn đến việc Select chậm khi trả về kết quả. Vì vậy đối với Log của mỗi tháng chúng ta sẽ tạo ra các bảng vd: Tháng 1 năm 2010 hệ thống sẽ tự động tạo ra bảng tbl_Month_1_2010 Tháng 2 năm 2010 hệ thống sẽ tự động tạo ra bảng tbl_Month_2_2010 … Tháng 12 năm 2010 hệ thống sẽ tự động tạo ra bảng tbl_Month_12_2010 Như vậy làm sao để hệ thống có thể tự tạo ra các bảng tương ứng với năm và tháng như vậy ? Giải pháp của tôi là sử dụng SQL Job trong SQL Server, cái này bắt buộc bạn phải có Full quyền Administrator trên Server Database Các bước như sau:

B1: Trong SQL Server bạn kéo xuống dưới có phần SQL Server Agent bạn phải Start nó lên nếu nó đang Stop

B2: Tại đây bạn được yêu cầu nhập Name: Tên của Job ở đây tôi chọn là CreateTableLogging và owner là sa

Bạn chọn tiếp Database là tên Database bạn muốn thực thi Phần Command bạn gõ câu lệnh sau để tạo bảng động

DECLARE @strCreateTable AS VARCHAR(1000) SET @strCreateTable = ‘CREATE TABLE tbl_Month_’ SET @strCreateTable += Cast(MONTH(GETDATE()) as varchar) SET @strCreateTable += ‘_’ SET @strCreateTable += Cast(YEAR(GETDATE()) as varchar) SET @strCreateTable +='(‘ SET @strCreateTable +=’ID int PRIMARY KEY IDENTITY,’ SET @strCreateTable +=’Name nvarchar(50)’ SET @strCreateTable +=’)’ –PRINT(@strCreateTable) EXEC(@strCreateTable)

Sau đó bạn ấn OK

B4: Tiếp đến bạn chọn phần Schedules (để đặt lịch chạy cho Job) ban chọn New Schedule ở đây bạn được yêu cầu nhập Schedule Name cho Job tôi chọn là ScheduleCreateTable, Phần tần suất (Frequency) tôi chọn Occurs chạy vào ngày 15 hàng tháng (Monthly) lúc 12h đêm.

B5: sau đó bạn ấn OK để hoàn tất việc đặt lịch chạy cho Job và OK để hoàn tất Job và đây là kết quả

B7: Nếu nó báo thế này thì có nghĩa là Job của bạn đã chạy chính xác

B8: Kiểm tra

Như vậy mới hoàn thành xong phần tạo bảng bước tiếp chúng ta phải insert vào bảng đó thế nào

DECLARE @strValue AS NVARCHAR(50) DECLARE @strSQL AS VARCHAR(1000) SET @strValue += Cast(GETDATE() as varchar)

SET @strSQL = ‘INSERT INTO tbl_Month_’ SET @strSQL += Cast(MONTH(GETDATE()) as varchar) SET @strSQL += ‘_’ SET @strSQL += Cast(YEAR(GETDATE()) as varchar) SET @strSQL += ‘([Name]) VALUES(”’ SET @strSQL += @strValue SET @strSQL += ”’)’ –PRINT(@strSQL) EXEC(@strSQL)

trong bảng tbl_Month_xx_xxxx này tôi có 2 trường là ID (tự tăng) và Name sau khi insert xong dữ liệu của tôi sẽ là thế này

ID Name

Share this:

Twitter

Facebook

Like this:

Số lượt thích

Đang tải…

Khởi Tạo Database Trong Sql Server

Dẫn nhập

Trong bài lần trước, chúng ta đã tìm hiểu SƠ LƯỢC VỀ SQL và hướng dẫn cài đặt SQL MANAGEMENT STUDIO cùng công cụ hỗ trợ. Bạn đã chuẩn bị để bắt đầu chứ?

Ở bài này, Kteam sẽ hướng dẫn bạn cách KHỞI TẠO DATABASE trong SQL Server. Chúng ta bắt đầu nào!

Nội dung chính

Trong bài này chúng ta sẽ cùng tìm hiểu một số vấn đề

Database trong SQL

Khởi tạo Database trong SQL Server

Xóa Database trong SQL Server

Một số lưu ý trong SQL

Comment trong SQL

Lưu Query chứa lệnh.

Database trong SQL (Cơ sở dữ liệu)

CSDL dùng để tổ chức và truy xuất những thông tin cần thiết, một cách tối đa hóa hỗ trợ hoạt động quản lý kinh doanh, nhân sự, điểm,….

Database (Cơ sở dữ liệu) là gì?

Một Database là tập hợp của rất nhiều dữ liệu phản ánh thế giới thực hoặc một phần của thế giới thực.

Có cấu trúc, được lưu trữ tuân theo quy tắc dựa trên lý thuyết toán học.

Được các Hệ cơ sở dữ liệu khai thác xử lý, tìm kiếm, tra cứu, sửa đổi, bổ sung hay loại bỏ dữ liệu trong Database.

Ở mức logic, một DATABASE gồm nhiều bảng (TABLE), mỗi bảng được xác định bằng một tên, bảng chứa dữ liệu có cấu trúc và các ràng buộc (CONSTRAINT) định nghĩa trên các bảng. Ngoài ra, Database còn có khung nhìn (VIEW), các thủ tục/ hàm….

Ở mức vật lý, DATABASE của SQL Server được lưu trữ dưới 3 loại tập tin:

Tập tin dữ liệu (Data-file): gồm 1 tập tin lưu trữ dữ liệu chính (*.mdf) chứa các dữ liệu khởi đầu và các tập tin dữ liệu thứ cấp (*.ndf) chứa dữ liệu phát sinh hoặc không lưu hết trong tập tin lưu trữ chính.

Tập tin nhật ký thao tác (*.ldf) chứa thông tin giao tác, thường dùng để khôi phục Database nếu xảy ra sự cố.

Tại sao phải tạo Database?

Như việc truy xuất, đóng mở tập tin thông thường, bạn cần tạo file lưu trữ trước khi truy xuất. Tương tự vậy, bạn cần tạo một DATABASE để lưu trữ dữ liệu trong SQL Server để tiện cho việc truy vấn sau này.

SQL Server sẽ giúp bạn quản lý, truy xuất những dữ liệu này một cách có cấu trúc và dễ dàng hơn.

Khởi tạo Database trong SQL Server

Tạo Database bằng giao diện (UI)

Cấu trúc đặt tên nên sử dụng là

Lưu ý:

Mỗi Database chỉ tồn tại với một TÊN DUY NHẤT, không trùng lặp với tên các Database sẳn có.

Chữ viết hoa hay thường không gây ảnh hưởng đến cú pháp trong SQL.

Tạo Database bằng giao diện có tên SQLDBUI

Tạo Database bằng code

Hộp thoại Message xuất hiện báo lệnh khởi tạo thành công.

Ví dụ:

CREATE DATABASE SQLDBQUERY

Xóa Database trong SQL Server

Để xóa một Database tồn tại trong danh sách ta dùng hai cách

Cách 1

Cách 2

Một số lưu ý trong SQL

Database đã tồn tại

Trong quá trình tạo Database bằng UI, nếu bạn gặp phải lỗi sau thì có nghĩ tên Database bạn muốn khởi tạo trùng với tên Database đã có sẵn trong SQL Server.

Tương tự, khi bạn khởi tạo một Database đã tồn tại trong danh sách bằng code. Hộp thoại Message sẽ báo lỗi như sau:

Giải pháp là thay đổi tên Database khác với các tên Database đã có trong danh sách để việc khởi tạo được hoàn tất.

Không tìm thấy database vừa khởi tạo hoặc vẫn nhìn thấy database đã xóa trong danh sách

Trong một số trường hợp, có thể bạn sẽ không nhìn thấy Database vừa khởi tạo, hoặc vẫn thấy tên của Database đã xóa trong danh sách Database bên trái sau khi thực thi lệnh thành công.

Thực thi lệnh trong Query

Trong quá trình thực thi lệnh (Excute) trong Query:

Khi bạn bôi đen dòng lệnh nào thì chỉ dòng lệnh đó được thực thi.

Nếu không bôi đen dòng lệnh cần thực thi mà nhấn Excute (F5) thì toàn bộ lệnh trong query đó đều được thực thi. Việc nào dễ gây ra lỗi trùng lặp dữ liệu, hoặc không thể thực thu lệnh, câu lệnh bị lỗi,…

Comment trong SQL

Để tạo COMMENT trong SQL, chúng ta sử dụng cú pháp

Lưu query chứa lệnh

Query được lưu như một file thông thường. Chọn Save hoặc phím tắt Ctrl + S

Kết

Trong bài này, chúng ta đã biết cách KHỞI TẠO VÀ THAO TÁC TRÊN DATABASE.

Bài sau, chúng ta sẽ tìm hiểu cách KHỞI TẠO, XÓA,SỬA TABLE TRONG SQL SERVER.

Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Khởi tạo Database trong SQL Server dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.

Cách Tạo Setup Project Visual Studio Với Sql Server

Tạo Solution có chứa 3 Project bên như dưới:

Project QLSVApplication: là ứng dụng dùng để hiển thị thông tin sinh viên, chỉ là 1 Datagridview để hiển thị lên.

Project SetupEngine : là Project loại Libraries, project này chúng ta sẽ thêm loại Installer đặt tên là InstallerEngine (Class này có nhiệm vụ cài đặt Cơ sở dữ liệu vào máy tính, với các thông số được truyền vào từ quá trình cài đặt do ta quy định). Ta sẽ nhúng các SQL Script mà SQLServer cung cấp cho ta vào đây với tên chúng tôi và chúng tôi (nhớ đặt tên viết thường, ta sẽ đi vào chi tiết ở phần sau)

Ta sẽ biên dịch project này thành dll để sử dụng trong Project QLSVSetup.

Project QLSVSetup : Dùng để cài đặt ứng dụng QLSVApplication vào máy tính, và ra lệnh cho SetupEngine cài đặt cơ sở dữ liệu

Bước 1: Tạo ứng dụng sử dụng Project QLSVApplication:

Trong project này đơn giản chỉ là hiển thị thông tin, chuỗi kết nối sẽ được đọc từ app.config. Chuỗi này sẽ được cấp nhập trong quá trình cài đặt vào máy tính.

Bước 2: Tạo Project để cài đặt CSDL Project SetupEngine: Project dùng để tạo CSDL, Project này chúng ta nhớ chọn loại Libraries

– Để tạo class Installer như trong project: Bấm chuột phải vào Project/ chọn Add / New Item . Trong của sổ mới hiện lên chúng ta tìm tới loại Installer Class, đặt tên class là InstallerEngine

– Đặt tên class InstallerEngine rồi nhấn Add

– Tiếp tục tạo 2 Text File để lưu SQL Script (các Script này được lấy bằng công cụ SQL Server cho lẹ). Ở đây ta chia làm 2 tập tin SQL Script bởi vì lý do sau: Thao tác tạo CSDL cần phải có thời gian chờ để nó kịp update vào SQL Server. Ta cho chờ 1 thời gian sau đó mới tiếp tục chạy các SQL Script về tạo bảng, insert dữ liệu…

– Để tạo Text File: Bấm chuột phải vào Project / Add/ New Item / chọn Text File và nhập tên

– Sau khi tạo xong tập tin chúng tôi chép đoạn Script tạo CSDL vào đây (xem hình ):

– Tiếp theo ta phải cấu hình để 2 Text File này được nhúng vào Resource sau khi biên dịch.

– Trong Properties: Lần lượt chọn 2 Text File trên và chọn Embedded Resource trong Build Action

– Bây giờ chúng ta tiến hành chỉnh sủa class InstallerEngine:

using System;using System.Collections;using System.Collections.Generic;

using System.ComponentModel;

using System.Configuration.Install;

using System.Linq;

using System.IO;

using System.Reflection;

using System.Data.SqlClient;

using System.Xml;

using System.Collections.Specialized;

namespace SetupEngine

{

[RunInstaller(true)]

public partial class InstallerEngine : System.Configuration.Install.Installer

{

private string logFilePath =””;

private string pathApp = “”;

public InstallerEngine()

{

InitializeComponent();

}

private string GetSql(string Name)

{

try

{

// Gets the current assembly.

Assembly Asm = Assembly.GetExecutingAssembly();

// Resources are named using a fully qualified name.

Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + “.” + Name);

StreamReader reader = new StreamReader(strm);

string sInfor = reader.ReadToEnd();

Log(sInfor);

reader.Close();

return sInfor;

}

catch (Exception ex)

{

Log(ex.ToString());

throw ex;

}

}

private void ExecuteSql(string serverName, string dbName, string userid, string password, string Sql)

{

string connStr = “server =” + serverName + “;database =” + dbName + “;uid=” + userid + “;pwd=” + password;

using (SqlConnection conn = new SqlConnection(connStr))

{

try

{

SqlCommand cmd = new SqlCommand(Sql);

conn.Open();

cmd.Connection = conn;

int n = cmd.ExecuteNonQuery();

Log(” n= ” + n);

conn.Close();

}

catch (Exception ex)

{

Log(ex.ToString());

}

}

}

protected void AddDBTable(string serverName, string userid, string password)

{

try

{

// Creates the database and installs the tables.

string strScript = GetSql(“sqldropcreate.txt”);

ExecuteSql(serverName, “master”, userid, password, strScript);

System.Threading.Thread.Sleep(60 * 1000);

strScript = GetSql(“sqldata.txt”);

ExecuteSql(serverName, “dbqlsv”, userid, password, strScript);

System.Threading.Thread.Sleep(60 * 1000);

string connStr = “server =” + serverName + “;database =dbqlsv;uid=” + userid + “;pwd=” + password;

Log(“AppPath=” + pathApp);

XmlDocument xmlDom = new XmlDocument();

xmlDom.Load(pathApp);

// Get XML node

XmlNode xmlNode = xmlDom.SelectSingleNode(

“configuration/appSettings/add[@key=’MYCONN’]”);

xmlNode.Attributes[“value”].Value = connStr;

// Updating connection string in file

Log(“Followind node of config file will be updated: ” + xmlNode.InnerXml);

// Save to disk

xmlDom.Save(pathApp);

}

catch (Exception ex)

{

//Reports any errors and abort.

Log(ex.ToString());

throw ex;

}

}

protected override void OnAfterInstall(IDictionary savedState)

{

base.OnAfterInstall(savedState);

}

public override void Install(System.Collections.IDictionary stateSaver)

{

base.Install(stateSaver);

string assemPath = this.Context.Parameters[“assemblypath”];

int pos = assemPath.LastIndexOf(“\”);

logFilePath = assemPath .Substring(0,pos+1)+ “\SetupLog117.txt”;

pathApp = assemPath.Substring(0, pos + 1) + “\QLSVApplication.exe.config”;

Log(“–Setup started–“);

Log(“Server=” + this.Context.Parameters[“servername”] + ” ; User Id=” + this.Context.Parameters[“userid”] + ” ; pwd=” + this.Context.Parameters[“password”]);

foreach (DictionaryEntry s in this.Context.Parameters)

{

Log(“Parameter : “+s.Key +” ; value =”+s.Value);

}

AddDBTable(this.Context.Parameters[“servername”], this.Context.Parameters[“userid”], this.Context.Parameters[“password”]);

}

public void Log(string str)

{

StreamWriter Tex;

try

{

Tex = File.AppendText(this.logFilePath);

Tex.WriteLine(DateTime.Now.ToString() + ” ” + str);

Tex.Close();

}

catch

{ }

}

}

}

Giải thích một số dòng lệnh bên trên:

Hàm GetSql(string Name) : Dùng để đọc 2 Text File Sql Script. Vì 2 tập tin này chúng ta nhúng vào Assembly nên cơ chế đọc tập tin sẽ là như vậy (xem code).

Lệnh : this.Context.Parameters[“assemblypath”]; lấy đúng đường dẫn mà lúc cài đặt chương trình người sử dụng chọn.

Key assemblypath là có sẵn, phải viết y chang.

this.Context.Parameters[“servername”], this.Context.Parameters[“userid”], this.Context.Parameters[“password”]

còn servernam, userid, password là do chúng ta quy định, do chúng ta đặt bên Project Setup, 3 biến này phải đặt y chang như 3 biến mà bên Project Setup ta đã đặt.

void AddDBTable(string serverName, string userid, string password) có nhiệm vụ xóa và tạo mới CSDL sau đó tạo các bảng, dữ liệu. sau khi tạo xong thì tự động cập nhập file App.config cho chương trình (dùng xml).

Chọn Setup project: đặt tên QLSVSetup rồi bấm OK.

Bấm chuột phải vào QLSVSetup/ chọn File System:

Tại cửa sổ này ta bấm chuột vào thư mục Application Folder, để có được thông tin như bên phải của hình ta làm như sau:

Bấm chuột phải vào Application Folder / Add/ Project Output…

Tiếp tục thêm các tập tin ứng dụng và app.config bên Project QLSVApplication vào đây:

Bấm chuột phải vào Application Folder / Add/ File:

Kết quả:

Để tạo Shortcut cho ứng dụng sau khi cài đặt thì ta bấm chuột phải vào QLSVApplication.exe

Sau đó cắt vào User’s Desktop hay User’s programs Menu, ta có thể tạo bất kỳ thư mục nào bên nhánh trái, rồi chép Shortcut vào đó, có thể tạo nhiều shortcut.

Tiếp theo ta cấu hình giao diện cài đặt, bấm chuột vào QLSVSetup, bên trên ta chọn Icon User Interface Editor:

Màn hình User interface sẽ xuất hiện:

Cửa sổ Add Dialog hiển thị lên:

Cấu hình TextBoxes (A) như hình chụp bên dưới:

Các tên : CUSTOMTEXTA1, CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt để bên Custom Action có thể tham chiếu lấy giá trị từ màn hình cài đặt. Không dùng Edit4Property nên to cho Edit4Visible =false

– Tiếp theo, cấu hình Custom Action: Bấm chuột phải vào QLSVSetup/ chọn View/ chọn Custom Actions

Tại cửa sổ Custom Actions, Bấm chuột phải vào Install / chọn Add Custom Action…

Chọn Primary ouput from SetupEngine (active) rồi bấm OK.

/servername=[CUSTOMTEXTA1] /userid=[CUSTOMTEXTA2] /password=[CUSTOMTEXTA3]

Ta viết y chang như trên, chú ý là 3 biến servername, userid, password ta đặt bên này được sử dụng cho bên SetupEngine :

this.Context.Parameters[“servername”], this.Context.Parameters[“userid”], this.Context.Parameters[“password”]

Tức là ở đây ta đặt tên gì thì bên SetupEngine phải lấy đúng tên ta đặt bên này

CUSTOMTEXTA1 , CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt cho các EditPropertie của Textboxes (A)

Bước 4: biên dịch và cài đặt

– Cấu hình QLSVSetup như bên dưới

Chọn Rebuild để biên dịch Setup.

Sau đó chọn Install để cài đặt:

Các bước cài đặt:

BẤM next, tự động xuất hiện màn hình cấu hình CSDL (chính là Textboxes (A))

2. Nhập thông tin và bấm Next:

3. Chọn đường dẫn cài đặt và bấm Next … cứ vậy là xong. Chương trình sẽ cài đặt ứng dụng đồng thời cài đặt SQL luôn (có cập nhật kết nối cho ta luôn)

Kết quả quan sát màn hình Desktop và khởi động chương trình:

Cài Đặt Sql Server Express 2012 Trên Windows

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:

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, đượ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');