📄 dr_main.pas
字号:
procedure TDR_DfmMain.Button4Click(Sender: TObject);
var
DR_DfmBackupDestination: TDR_DfmBackupDestination;
i: integer;
begin
if DestinationListBox.Items.Count <> 0 then
Exit;
DR_DfmBackupDestination := TDR_DfmBackupDestination.Create(Self,
DestinationListBox);
DR_DfmBackupDestination.ShowModal;
if DR_DfmBackupDestination.AddDeviceIdentify = False then
Exit;
DR_DfmBackupDestination.Free;
DBGrid1.DataSource := DR_DfmDataModule1.BackupDeviceContentDataSource;
with DR_DfmDataModule1.BackupDeviceContentADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('RESTORE HEADERONLY FROM ' + DestinationListBox.Items[0]);
try
open;
except
ShowMessage('error');
Exit;
end;
FieldByName('BackupDescription').Visible := False;
FieldByName('ExpirationDate').Visible := False;
FieldByName('Compressed').Visible := False;
FieldByName('Position').Visible := False;
FieldByName('DeviceType').Visible := False;
FieldByName('UserName').Visible := False;
FieldByName('DatabaseVersion').Visible := False;
FieldByName('DatabaseCreationDate').Visible := False;
FieldByName('FirstLsn').Visible := False;
FieldByName('LastLsn').Visible := False;
FieldByName('CheckpointLsn').Visible := False;
//FieldByName('DatabaseBackupLsn').Visible := False;
FieldByName('BackupStartDate').Visible := False;
FieldByName('SortOrder').Visible := False;
FieldByName('CodePage').Visible := False;
FieldByName('UnicodeLocaleID').Visible := False;
FieldByName('UnicodeComparisonStyle').Visible := False;
FieldByName('CompatibilityLevel').Visible := False;
FieldByName('SoftwareVendorID').Visible := False;
FieldByName('SoftwareVersionMajor').Visible := False;
FieldByName('SoftwareVersionMinor').Visible := False;
FieldByName('SoftwareVersionBuild').Visible := False;
FieldByName('DifferentialBaseLsn').Visible := False;
FieldByName('Flags').Visible := False;
FieldByName('BindingId').Visible := False;
FieldByName('RecoveryForkId').Visible := False;
FieldByName('Collation').Visible := False;
FieldByName('MachineName').Visible := False;
FieldByName('BackupName').DisplayLabel := '备份后库名';
FieldByName('BackupType').DisplayLabel := '备份类型';
FieldByName('ServerName').DisplayLabel := '服务器名称';
FieldByName('DatabaseName').DisplayLabel := '数据库名称';
FieldByName('BackupSize').DisplayLabel := '备份容量';
FieldByName('BackupFinishDate').DisplayLabel := '备份完成时间';
end;
for i := 0 to DBGrid1.FieldCount - 1 do
DBGrid1.Fields[i].DisplayWidth := 1;
end;
//删除备份设备==================================================================
procedure TDR_DfmMain.Button5Click(Sender: TObject);
var
i: integer;
begin
if DestinationListBox.Items.Count = 0 then
Exit;
ReplaceDatabaseCheck;
for i := 0 to DestinationListBox.Items.Count do
DestinationListBox.Items.Delete(i);
DR_DfmDataModule1.BackupDeviceContentADOQuery.Close;
end;
//历史状态下被恢复数据库变动事件==================================================
procedure TDR_DfmMain.RestoreDatabaseNameComboBoxChange(Sender: TObject);
var
i: integer;
begin
ReplaceDatabaseCheck;
AfterRestorDatabaseNameComboBox.Text := RestoreDatabaseNameComboBox.Text;
FullBackupTimeComboBox.Items.Clear;
with DR_DfmDataModule1.FullBackupTimeADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select backup_start_date From BackupSet Where Type=''D'' and database_name=''' + RestoreDatabaseNameComboBox.Text + '''');
try
Open;
except
ShowMessage('error');
Exit;
end;
Last;
while not Bof do
begin
FullBackupTimeComboBox.Items.Add(FieldByName('backup_start_date').AsString);
Prior;
end;
end;
FullBackupTimeComboBox.ItemIndex := 0;
with DR_DfmDataModule1.BackupHistoryADOQuery do
begin
Close;
Sql.Clear;
if FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) = 0
then
Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
FullBackupTimeComboBox.Text + ''' and database_name=''' +
RestoreDatabaseNameComboBox.Text + '''')
else
Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
FullBackupTimeComboBox.Text + ''' and backup_start_date<''' +
FullBackupTimeComboBox.Items[FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) - 1] + ''' and database_name=''' + RestoreDatabaseNameComboBox.Text +
'''');
try
Open;
except
ShowMessage('error');
Exit;
end;
FieldByName('backup_set_id').Visible := False;
FieldByName('backup_set_uuid').Visible := False;
FieldByName('media_set_id').Visible := False;
FieldByName('first_family_number').Visible := False;
FieldByName('first_media_number').Visible := False;
FieldByName('last_family_number').Visible := False;
FieldByName('last_media_number').Visible := False;
FieldByName('catalog_family_number').Visible := False;
FieldByName('catalog_media_number').Visible := False;
FieldByName('position').Visible := False;
FieldByName('expiration_date').Visible := False;
FieldByName('software_vendor_id').Visible := False;
FieldByName('description').Visible := False;
FieldByName('user_name').Visible := False;
FieldByName('software_major_version').Visible := False;
FieldByName('software_minor_version').Visible := False;
FieldByName('software_build_version').Visible := False;
FieldByName('time_zone').Visible := False;
FieldByName('mtf_minor_version').Visible := False;
FieldByName('First_Lsn').Visible := False;
FieldByName('Last_Lsn').Visible := False;
FieldByName('Checkpoint_Lsn').Visible := False;
FieldByName('Database_Backup_Lsn').Visible := False;
FieldByName('database_creation_date').Visible := False;
FieldByName('backup_start_date').Visible := False;
FieldByName('sort_order').Visible := False;
FieldByName('code_page').Visible := False;
FieldByName('compatibility_level').Visible := False;
FieldByName('database_version').Visible := False;
FieldByName('machine_name').Visible := False;
FieldByName('name').DisplayLabel := '备份后库名';
FieldByName('backup_finish_date').DisplayLabel := '备份完成时间';
FieldByName('type').DisplayLabel := '备份类型';
FieldByName('backup_size').DisplayLabel := '备份容量';
FieldByName('database_name').DisplayLabel := '数据库名称';
FieldByName('server_name').DisplayLabel := '服务器名称';
end;
for i := 0 to BackupHistoryDBGrid.FieldCount - 1 do
BackupHistoryDBGrid.Fields[i].DisplayWidth := 1;
BackupHistoryDBGrid.DataSource := DR_DfmDataModule1.BackupHistoryDataSource;
ReplaceDatabaseCheckBox.Checked := False;
SourceDatabaseMemo.Lines.Clear;
DestinationDatabaseMemo.Lines.Clear;
DestinationDatabaseMemo.ReadOnly := True;
end;
//历史状态下被恢复数据库整库备份时间变动事件====================================
procedure TDR_DfmMain.FullBackupTimeComboBoxChange(Sender: TObject);
var
i: integer;
begin
ReplaceDatabaseCheck;
with DR_DfmDataModule1.BackupHistoryADOQuery do
begin
Close;
Sql.Clear;
if FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) = 0
then
Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
FullBackupTimeComboBox.Text + ''' and database_name=''' +
RestoreDatabaseNameComboBox.Text + '''')
else
Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
FullBackupTimeComboBox.Text + ''' and backup_start_date<''' +
FullBackupTimeComboBox.Items[FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) - 1] + ''' and database_name=''' + RestoreDatabaseNameComboBox.Text +
'''');
try
Open;
except
ShowMessage('error');
Exit;
end;
FieldByName('backup_set_id').Visible := False;
FieldByName('backup_set_uuid').Visible := False;
FieldByName('media_set_id').Visible := False;
FieldByName('first_family_number').Visible := False;
FieldByName('first_media_number').Visible := False;
FieldByName('last_family_number').Visible := False;
FieldByName('last_media_number').Visible := False;
FieldByName('catalog_family_number').Visible := False;
FieldByName('catalog_media_number').Visible := False;
FieldByName('position').Visible := False;
FieldByName('expiration_date').Visible := False;
FieldByName('software_vendor_id').Visible := False;
FieldByName('description').Visible := False;
FieldByName('user_name').Visible := False;
FieldByName('software_major_version').Visible := False;
FieldByName('software_minor_version').Visible := False;
FieldByName('software_build_version').Visible := False;
FieldByName('time_zone').Visible := False;
FieldByName('mtf_minor_version').Visible := False;
FieldByName('First_Lsn').Visible := False;
FieldByName('Last_Lsn').Visible := False;
FieldByName('Checkpoint_Lsn').Visible := False;
FieldByName('Database_Backup_Lsn').Visible := False;
FieldByName('database_creation_date').Visible := False;
FieldByName('backup_start_date').Visible := False;
FieldByName('sort_order').Visible := False;
FieldByName('code_page').Visible := False;
FieldByName('compatibility_level').Visible := False;
FieldByName('database_version').Visible := False;
FieldByName('machine_name').Visible := False;
FieldByName('name').DisplayLabel := '备份后库名';
FieldByName('backup_finish_date').DisplayLabel := '备份完成时间';
FieldByName('type').DisplayLabel := '备份类型';
FieldByName('backup_size').DisplayLabel := '备份容量';
FieldByName('database_name').DisplayLabel := '数据库名称';
FieldByName('server_name').DisplayLabel := '服务器名称';
end;
for i := 0 to BackupHistoryDBGrid.FieldCount - 1 do
BackupHistoryDBGrid.Fields[i].DisplayWidth := 1;
BackupHistoryDBGrid.DataSource := DR_DfmDataModule1.BackupHistoryDataSource;
ReplaceDatabaseCheckBox.Checked := False;
SourceDatabaseMemo.Lines.Clear;
DestinationDatabaseMemo.Lines.Clear;
DestinationDatabaseMemo.ReadOnly := True;
end;
//覆盖已有数据库变动选项==================================================================
procedure TDR_DfmMain.ReplaceDatabaseCheckBoxClick(Sender: TObject);
var
TemporaryHistoryDeviceName: string;
TemporaryHistoryBackupSetNumber: string;
DestinationDatabaseFileName: string;
SourceDatabaseFileName: string;
begin
//覆盖======================================
if ReplaceDatabaseCheckBox.Checked = True then
begin
DestinationDatabaseMemo.ReadOnly := False;
//历史状态恢复============================
if RestoreModeRadioGroup.ItemIndex = 0 then
begin
DR_DfmDataModule1.SourceDestinationDatabaseADOQuery.Close;
DR_DfmDataModule1.SourceDestinationDatabaseADOQuery.Sql.Clear;
if DR_DfmDataModule1.BackupHistoryADOQuery.RecordCount = 0 then
begin
ReplaceDatabaseCheckBox.Checked := False;
Exit;
end;
DR_DfmDataModule1.SourceDestinationDatabaseADOQuery.Sql.Add('Select * From msdb..BackupMediaFamily Inner Join msdb..BackupSet On msdb..BackupMediaFamily.Media_Set_Id=msdb..BackupSet.Media_Set_Id Where msdb..BackupSet.Backup_Set_Id=' +
DR_DfmDataModule1.BackupHistoryADOQuery.FieldByName('Backup_Set_Id').AsString);
try
DR_DfmDataModule1.SourceDestinationDatabaseADOQuery.Open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -