PDA

View Full Version : سوال: backUp از بخشي از database



خانم گل
پنج شنبه 07 شهریور 1387, 08:51 صبح
سلام. ميشه فقط از چند تا جدول خاص توي sqlExpressپشتيبان گرفت؟!

hdv212
پنج شنبه 07 شهریور 1387, 11:43 صبح
بدین شکلی که شما به راحتی بخواین انجام بدین خیر، ولی میشه از یه سری تکنیکها استفاده کرد که البته یه مقدار پیچیده میشه، ولی شدنیه :
باید ابتدا برای جدول یا جداولتون در Sql Server یک DataFile جدید بسازید.
سپس یک FileGroup جدید بسازید و DataFile ساخته شده رو عضو این FileGroup کنید.
حالا جداولی که تعریف میکنید رو باید در FileGroup مورد نظر بسازید.
حالا میتونید از FileGroup مورد نظر Backup بگیرید (که شامل جداولی هست که مورد نظر شما بودند)
برای backup گرفتن از filegroup میتونید از نمونه ی زیر کمک بگیرید :

-- Backup FileGroup named = primary
backup database MyDb filegroup = N'primary' to disk = N'C:\backupTest\mydbFg1.bak'

و برای restore هم همینطور :

-- Restore FileGroup named = primary
use master
restore database MyDb filegroup = N'primary' from disk = N'C:\backupTest\mydbFg1.bak'
موفق باشید.

mehrnoosh_al62
پنج شنبه 07 شهریور 1387, 13:25 عصر
سلام
1- اول یه دیتابیس با نام دلخواه Create کن.

Create DataBase Backup_db
2- بعد تمام جداولی که میخوای از اونها Backup بگیری با دستور Select * Into به دیتابیس فوق Copy کن.
(فرضا میتونی ابتدا همه جداول رو درون یه CheckListBox بریزی و اونایی که میخوای رو تیک بزنی...)

for (int i = 0; i <= checkedListBox1.Items.Count - 1; i++)
{
if (checkedListBox1.GetItemChecked(i) == true)
{
sqlcomm.CommandText = " select * into Backup_db.dbo." + checkedListBox1.Items[i].ToString() + " from " + Your DB Name+ ".dbo." + checkedListBox1.Items[i].ToString() ";
sqlcomm.ExecuteNonQuery();
}
}

(sqlcomm یه شی از SqlCommand هست...)

3- حالا از دیتابیس جدید Backup بگیر


" BACKUP DATABASE Backup_db TO DISK = '" + Path + "'"

من خودم تو برنامم از این روش استفاده کردم و جواب هم گرفتم...