معرفی
در این مقاله قصد داریم فرآیند تهیه نسخه پشتیبان از پایگاه داده در اپلیکیشن WinForm سی شارپ با استفاده از Stored Procedure را بیاموزیم.
ایجاد جداول و رویه ذخیره شده
ابتدا دو جدول برای ذخیره اطلاعات پشتیبان پایگاه داده ایجاد می کنیم.
SQL Server را باز کنید تا یک پایگاه داده با هر نام مناسب ایجاد کنید و سپس دو جدول و یک رویه ذخیره شده ایجاد کنید.
در اینجا، من از DemoTest به عنوان نام پایگاه داده و tblBackupInfo و tblBackupDetails به عنوان نام جداول استفاده می کنم.
ساختار جداول
- CREATE TABLE [dbo].[tblBackupInfo](
- [IID] [int] IDENTITY(1,1) NOT NULL,
- [DayInterval] [int] NULL,
- [NoOfFiles] [int] NULL,
- [DatabaseName] [nvarchar](500) NULL,
- [Location] [nvarchar](max) NULL,
- [SoftwareDate] [datetime] NULL,
- [LastEditDate] [datetime] NULL,
- [CreationDate] [datetime] NOT NULL
- )
- CREATE TABLE [dbo].[tblBackupDetails](
- [IID] [int] IDENTITY(1,1) NOT NULL,
- [BackupName] [varchar](50) NULL,
- [Location] [varchar](500) NULL,
- [BackupDate] [datetime] NULL,
- [BackupType] [varchar](50) NULL,
- [CreationDate] [datetime] NOT NULL
- )
رویه ذخیره شده
- CREATE PROCEDURE [dbo].[DATABASE_BACKUP]
- (
- @DatabaseName VARCHAR(1000) = NULL,
- @Location VARCHAR(1000) = NULL,
- @Type VARCHAR(25) = NULL,
- @BackupName VARCHAR(500) = NULL,
- @FILEPATH VARCHAR(2000) = NULL,
- @DATABASE VARCHAR(1000) = NULL,
- @DayInterval INT = NULL,
- @NoOfFiles INT = NULL,
- @SoftwareDate DATE = NULL,
- @ACTIONTYPE VARCHAR(50)
- )
- AS
- BEGIN
- IF @ACTIONTYPE = 'BACKUP_INFO'
- BEGIN
- SELECT DATABASENAME,ISNULL(NoOfFiles,0) AS NoOfFiles,LOCATION,DayInterval FROM tblBackupInfo
- SELECT TOP 1 BackupType,BackupDate,Location FROM tblBackupDetails ORDER BY IID DESC
- END
- IF @ACTIONTYPE = 'INSERT_BACKUP_INFO'
- BEGIN
- IF NOT EXISTS (SELECT * FROM tblBackupInfo)
- BEGIN
- INSERT INTO tblBackupInfo (DayInterval,NoOfFiles,DatabaseName,Location,SoftwareDate,CreationDate)
- VALUES (@DayInterval,@NoOfFiles,@DatabaseName,@Location,@SoftwareDate,GETDATE())
- END
- ELSE
- BEGIN
- UPDATE tblBackupInfo SET DayInterval=@DayInterval,NoOfFiles=@NoOfFiles,DatabaseName=@DatabaseName,
- Location=@Location,SoftwareDate=@SoftwareDate,LastEditDate=GETDATE()
- END
- END
- IF @ACTIONTYPE = 'DB_BACKUP'
- BEGIN
- BEGIN TRY
- BACKUP DATABASE @DATABASE
- TO DISK = @FILEPATH;
- INSERT INTO tblBackupDetails VALUES(@BackupName,@FILEPATH,@SoftwareDate,@Type,GETDATE())
- END TRY
- BEGIN CATCH
- SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() AS ErrorState,
- ERROR_PROCEDURE() AS ErrorProcedure,ERROR_LINE() AS ErrorLine,ERROR_MESSAGE() AS ErrorMessage;
- END CATCH
- END
- IF @ACTIONTYPE = 'REMOVE_LOCATION'
- BEGIN
- SELECT Location FROM tblBackupDetails WHERE IID NOT IN (
- SELECT TOP (SELECT NoOfFiles FROM tblBackupInfo) IID FROM tblBackupDetails ORDER BY IID DESC)
- END
- END
ایجاد اپلیکیشن پنجره
پس از ایجاد موفقیت آمیز جداول و رویه ذخیره شده، اکنون اجازه دهید به برنامه ویندوز برویم.
ویژوال استودیو را باز کنید و یک برنامه کاربردی ویندوز به نام "DBBACKUP" ایجاد کنید. فرم پیش فرض "Form1" را حذف کنید و یک فرم جدید به نام "FrmDbBackup" اضافه کنید. فرم را مانند تصویر زیر طراحی کنید.