Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
News & Announcements
  • Top posters
 Mr.Pakapun (256)
 ddtan90 (178)
 tvduong (147)
 dthnam90 (137)
 minhquankq (101)
 arianbo (70)
 DoanhNhan (54)
 chicken (53)
 stormit (52)
 gentle_storm (47)

Share | 
 

 sao luu va phuc hoi co so du lieu sql server

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
hhdang
Thành viên nhiệt tình
Thành viên nhiệt tình


Tổng số bài gửi : 29
Join date : 04/01/2011
Age : 26
Đến từ : sóc trăng

Bài gửiTiêu đề: sao luu va phuc hoi co so du lieu sql server   Mon Oct 31, 2011 11:56 pm

Các bạn download chương trình về chạy thử, trong đó mình có chú thích. Tại mình thấy nhiều bạn làm niên luận 2 lúc làm file cài đặt mà phải import csdl bằng tay.

tải chương trinh tại đây.

[You must be registered and logged in to see this link.]
Về Đầu Trang Go down
Xem lý lịch thành viên
tvduong
Admin
Admin
avatar

Tổng số bài gửi : 147
Join date : 29/10/2010
Age : 27

Bài gửiTiêu đề: Re: sao luu va phuc hoi co so du lieu sql server   Tue Nov 01, 2011 11:34 am

Thanks Đăng, mà mình thấy chương trình có chút bất tiện: mỗi lần backup hay restore csdl thì phải mở code lên sửa sao? Nên mạo muội bổ sung thêm tính năng lựa chọn trên chương trình! Smile
Link:
Code:

 http://www.mediafire.com/?ln74jle3hmn02uu

Trình soạn thảo: VS 2010.

_____________________
Về Đầu Trang Go down
Xem lý lịch thành viên
Mr.Pakapun
Mod
Mod
avatar

Tổng số bài gửi : 256
Join date : 25/02/2011
Age : 26
Đến từ : CTU

Bài gửiTiêu đề: Re: sao luu va phuc hoi co so du lieu sql server   Tue Nov 01, 2011 10:52 pm

Thanks các sư huynh đã chung tay góp sức show ra vấn đề nan giải đối với những ai đang làm Niên Luận 2. Nhưng, các huynh đưa "hàng khủng" ra đây, tụi đệ chỉ được xem mà không biết nội dung bên trong, cách thức để backup & restore CSDL ra sao (sư huynh hhdang đã "đóng gói" source code trong file .dll - lẽ ra anh nên viết rõ ràng ra để mọi người xem hiểu để học hỏi).

Nếu các huynh có lòng xin hãy hướng dẫn mọi người các bước để thực hiện thành công backup & restore SQL trong C#.

Thanks sư huynh hhdang 2 phát vì đã create topic quá hot này.
Thanks sư huynh tvduong 1 phát vì đã cải thiện chương trình hay hơn.

_____________________


Về Đầu Trang Go down
Xem lý lịch thành viên
hhdang
Thành viên nhiệt tình
Thành viên nhiệt tình


Tổng số bài gửi : 29
Join date : 04/01/2011
Age : 26
Đến từ : sóc trăng

Bài gửiTiêu đề: Re: sao luu va phuc hoi co so du lieu sql server   Wed Nov 02, 2011 7:05 am

Chào Mr.Pakapun.
Lúc đầu mình định viết 1 cái file ddl để mọi người sử dụng các hàm cho dễ khỏi phải lo lắng gì nội dung bên trong.
Nếu anh em muốn biết cách thức hoạt động của nó thì mình xin hướng dưới đây lun.

Trong file ddl của mình có 3 hàm thôi.


// hàm này dùng để lấy tên các server đã cài đặt trên máy của mình ( tức local ), khi mình cài sql server vào trong máy nó sẽ tạo 1 string trong khóa HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL tên của string đó sẽ là tên của server sql khi chúng ta kết nối.

static public string[] get_instance_name()
{
//mở key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL để đọc thông tin
RegistryKey Sub_Key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\", false);

//kiểm tra tồn tại key
if (Sub_Key == null)
{
return null;
}
// kiểm tra số lượng name instance lớn hơn 0
if (Sub_Key.ValueCount < 1)
{
return null;
}
// đưa tất cả các giá trị lấy được vào biến result
string []result=Sub_Key.GetValueNames();
//đóng key lại
Sub_Key.Close();
// trả về tập hợp các chuỗi là các server name
return result;
}


// hàm tạo csdl và phục hồi nó từ 1 file đã backup bằng lệnh backup của sql
// các tham số đầu vào là instance_name (tên server, vì trong máy có thể có nhiều server sql đang chạy đồng thời nên cần chỉ định tên này để biết sẽ phục csdl lên server sql nào), file ( là chuỗi đường dẫn dẫn đến file backup ), name_database ( là tên csdl, tên này phải khớp với tên csdl mà đã backup thành file trong tham số trước đó ), sizedb ( là số MB mình sẽ cấp phát cho csdl ), sizelog ( là số MB mình sẽ cấp phát cho log của csdl đó)
static public bool restore(string instance_name,string file,string name_database,int sizedb,int sizelog)
{
//chuyển 2 tham số này thành đơn vị KB (1M=1024KB)
sizedb = sizedb * 1024;
sizelog = sizelog * 1024;
//tạo 1 tên file ngẫu nhiên
string newfile = Path.GetRandomFileName();
// copy file từ tham số truyền vào thành newfile nằm trực tiếp trên ổ đĩa hệ thống
// Environment.ExpandEnvironmentVariables("%SystemDrive%") trả về ký tự của ổ đĩa đã cài window
// chúng ta cần làm việc này đã tránh 1 số trường hợp file backup nằm trong 1 thư mục nào đó mà sql không cho phục hồi
File.Copy(file, Environment.ExpandEnvironmentVariables("%SystemDrive%")+"\\"+newfile, true);
try
{
//mo ket noi với server đã chọn
//vì lúc trước đó chúng ta chỉ lấy tên các server đã cài vào máy mà không đảm bảo nó đã chạy trên máy khi khởi động window, vì vậy try catch sẽ khi bắt lỗi khi sql server chưa chạy và trã kết quả là false
SqlConnection conn = new SqlConnection(@"Data Source=localhost\" + instance_name + ";Integrated Security=True");
// mở kết nối
conn.Open();

//tạo SqlCommand tu conn
SqlCommand cmd = conn.CreateCommand();

try
{
//tao database bằng câu lệnh CREATE DATABASE , nếu đã tồn tại database nó sẽ báo lỗi và try catch sẽ đưa chúng ta đi qua lỗi này đến lệnh restore
//lệnh này Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) để lấy đường dẫn của thư mục program files, chúng ta không đưa trực tiếp C:\Program Files vào vì có thể hệ thống không được cài đặt trên ổ đĩa C
cmd.CommandText = @"CREATE DATABASE [" + name_database + "] ON PRIMARY ( NAME = N'" + name_database + "', FILENAME = N'" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\" + name_database + ".mdf' , SIZE = "+sizedb+"KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'" + name_database + "_log', FILENAME = N'" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\" + name_database + "_log.ldf' , SIZE = "+sizelog+"KB , FILEGROWTH = 10%)";
cmd.ExecuteNonQuery();
}
catch
{
}

//phục hồi CSDL tu file Environment.ExpandEnvironmentVariables("%SystemDrive%")+"\\"+newfile
cmd.CommandText = "RESTORE DATABASE [" + name_database + "] FROM DISK = N'" + Environment.ExpandEnvironmentVariables("%SystemDrive%") + "\\" + newfile + "' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
// thực thi lệnh và đóng kết nối.
cmd.ExecuteNonQuery();
conn.Close();
//xoa file newfile
File.Delete(Environment.ExpandEnvironmentVariables("%SystemDrive%") + "\\" + newfile);
//nếu chạy được đến đây thì công đoạn phục hồi coi như thành công.
return true;
}
catch (SqlException ex)
{
//trả về false nếu báo lỗi
return false;
}
return false;
}


// hàm sao lưu csdl. các tham số là instance_name(tên server), file(đường dẫn và tên file sẽ xuất ra khi sao lưu),name_database (tên csdl sẽ được sao lưu)
static public bool backup(string instance_name,string file,string name_database)
{
try
{
SqlConnection conn = new SqlConnection(@"Data Source=localhost\" + instance_name + ";Integrated Security=True");
conn.Open();

//tạo SqlCommand tu conn
SqlCommand cmd = conn.CreateCommand();

//sao luu
cmd.CommandText = "BACKUP DATABASE [" + name_database + "] TO DISK = N'" + file + "' WITH NOFORMAT, NOINIT, NAME = N'" + name_database + "-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
cmd.ExecuteNonQuery();
conn.Close();
//báo kết thúc thành công
return true;
}
catch
{
return false;
}
return false;
}

link [You must be registered and logged in to see this link.]
Cám ơn các bạn vì đã quan tâm chủ đề này.
Về Đầu Trang Go down
Xem lý lịch thành viên
Mr.Pakapun
Mod
Mod
avatar

Tổng số bài gửi : 256
Join date : 25/02/2011
Age : 26
Đến từ : CTU

Bài gửiTiêu đề: Re: sao luu va phuc hoi co so du lieu sql server   Wed Nov 02, 2011 8:07 am

Có thế chứ!
Thanh sư huynh hhdang 1 phát nữa.


_____________________


Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: sao luu va phuc hoi co so du lieu sql server   

Về Đầu Trang Go down
 
sao luu va phuc hoi co so du lieu sql server
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Những tình huống có thể gặp nạn
» Tin Hàng hải trong nước
» Vụ tàu Phúc Hải Sun bị bắt giữ tại Nigeria: Bỏ tàu, ai được lợi?
» Chợ ve chai ngàn đô giữa Sài Gòn
» 1 câu chuyện khác về Sak

Permissions in this forum:Bạn không có quyền trả lời bài viết
Câu lạc bộ Hỗ Trợ Học Tập :: LẬP TRÌNH :: .::LẬP TRÌNH VB/C#-
Chuyển đến