PDA

View Full Version : حرفه ای: پشیبان گیری خودکار از بانک sql severe 2008در سی شارپ



zare69
شنبه 19 آذر 1390, 10:08 صبح
دوستان سلام
من میخوام یک jobبنویسم برای2008 sql server و از داخل برنامه ام که با سی سارپ نوشتم مدیریت کنم مثلا در روزهای مشخصی از بانکم پشتیبان بگیرد.
کسی میتوند منو راهنمای کنه؟ ممنون میشم.

zarrinnegar
شنبه 19 آذر 1390, 10:13 صبح
باید یه تایمر بزاری یا اینکه یه جوری زمان رو خودت مدیریت کنی ولی برای backup گیری


public void BackupDatabase(String databaseName, String userName,
String password, String serverName, String destinationPath)
{
Backup sqlBackup = new Backup();

sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
sqlBackup.BackupSetName = "Archive";

sqlBackup.Database = databaseName;

BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);

Database db = sqlServer.Databases[databaseName];

sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;

sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;

sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

sqlBackup.FormatMedia = false;

sqlBackup.SqlBackup(sqlServer);
}


برای برگردوندن اطلاعات


public void RestoreDatabase(String databaseName, String filePath,
String serverName, String userName, String password,
String dataFilePath, String logFilePath)
{
Restore sqlRestore = new Restore();

BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = databaseName;

ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);

Database db = sqlServer.Databases[databaseName];
sqlRestore.Action = RestoreActionType.Database;
String dataFileLocation = dataFilePath + databaseName + ".mdf";
String logFileLocation = logFilePath + databaseName + "_Log.ldf";
db = sqlServer.Databases[databaseName];
RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);

sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName+"_log", logFileLocation));
sqlRestore.ReplaceDatabase = true;
sqlRestore.Complete += new ServerMessageEventHandler(sqlRestore_Complete);
sqlRestore.PercentCompleteNotification = 10;
sqlRestore.PercentComplete +=
new PercentCompleteEventHandler(sqlRestore_PercentComp lete);

sqlRestore.SqlRestore(sqlServer);
db = sqlServer.Databases[databaseName];
db.SetOnline();
sqlServer.Refresh();
}

zare69
شنبه 19 آذر 1390, 10:54 صبح
خیلی ممنون دوست عزیز ولی من می خوام یه job در sql تعریف کنم واز طریق کد نویسی مدیریت کنم اون وقت خودش پارامترهای زمانبندی را داره و نیازی به تایمر ندارد.اما نمیدونم چه جوری این کار را انجام بدهم؟

Aqeel95
دوشنبه 25 خرداد 1394, 20:11 عصر
میدونم که این تایپک خییییییییییییییییییلی قدیمیه
اما اگر که دوستان راهنمایی کنن که آیا این سوال دوستمون قابل اجرا هست یا خیر!!!!
به طور مثال تعیین کنیم که روزهای 3شنبه هر هفته پشتیبان بگیر ویا اینکه مثلا بعداز ثبت هر 100 رکورد پشتیبان بگیر!!!!
ممنون میشم اگر که دوستان پاسخ بدن
-----------------
خواهش دوم هم اینکه من تازه اولین برنامم رو کامل کردم و فقط مونده همین backup&restore.
اگر که همین کدهایی که توهمین تایپک هست رو یکی از دوستان توضیحاتی درموردش بدن ممنون میشم
(تایپک های دیگه رو دیدم باز هم شبیه همین کدها بود ، اما بدون توضیح
به طور مثال کلمه highlight که توی کدهست چیه؟ )