Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Trukhanov_VP
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2

Не восстанавливается база данных SQL Server 2005 + Delphi 7

18.09.2013, 14:22. Показов 2723. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал Backup базы. Внес изменения и коррективы в нее. Хочу восстановить прежнюю, пишу такой запрос для Query (выполняю через ExecSQL):
SQL
1
2
USE master restore DATABASE PS FROM disk = 'C:\SQLBackUp\PS_1000_19082013.bak' WITH norecovery, REPLACE 
USE master restore log PS FROM disk = 'C:\SQLBackUp\PS_1000_19082013.bak' WITH recovery
ошибок программа не выдает, но база не восстанавливается! В чем дело ?
Примечание: Если я ЭТОТ КОД юзаю в Студии sql - база восстанавливается.

Быть может не через запрос нужно ее восстанавливать ? Создать хранимую процедуру ? Или что там еще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2013, 14:22
Ответы с готовыми решениями:

Delphi + ms sql server 2005
Уважаемые, помогите пожалуйста. Проблема в следующем, нужно связаться с ms sql server 2005 средствами delphi и выполнить единственную...

книги по SQL Server 2005 и Delphi 7
Помоги те плиз, если у кого есть ссылки на книги, связанные с SQL Server 2005 и Delphi 7, чтобы в ней было подробно написано как и что!! в...

Настройка передачи данных из SQL Server 2005 в Sharepoint Server 2010 Foundation
Доброго времени суток. Хочу реализовать одну схему по запросу данных из информационной системы (ИС), работающей с СУРБД SQL Server 2005,...

9
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
18.09.2013, 22:11
Через Management Studio не пробовали вот так http://www.youtube.com/watch?v=sp5WOcJCZlg
1
 Аватар для Trukhanov_VP
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
19.09.2013, 08:46  [ТС]
Мне не нужно через
Цитата Сообщение от xxbesoxx Посмотреть сообщение
Management Studio
я хочу реализовать это действие в программе (Восстановление БД)

Не по теме:

:wall:

0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
19.09.2013, 13:12
Ну хочешь это хорошо, Но скажи как вы это начали реализовать ?
1
 Аватар для Trukhanov_VP
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
19.09.2013, 13:19  [ТС]
Цитата Сообщение от xxbesoxx Посмотреть сообщение
Ну хочешь это хорошо, Но скажи как вы это начали реализовать ?
Спасибо, благодаря видео проделал данный "трюк" с восстановлением и извлек сценарий от туда!
Получил вот такой SQL код
SQL
1
2
3
4
RESTORE DATABASE [PS_1400_18092013] FROM  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\Backup\PS_1400_18092013.bak' WITH  FILE = 1,  
MOVE N'PS' TO N'C:\PROJECTS\Database\PS\PS_1400_18092013.mdf',  
MOVE N'PS_log' TO N'C:\PROJECTS\Database\PS\PS_1400_18092013_log.ldf',  
NOUNLOAD,  STATS = 10
, вставил в Query в Delphi, Exec'аю - все восстанавливается!

Не по теме:

Тема закрыта!

0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
19.09.2013, 13:27
резервное копирование БД
1. SaveDialogFullBD = это SaveDialog

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.BitB_BekClick(Sender: TObject);
begin
   if SaveDialogFullBD.Execute then
 begin
    Screen.Cursor:=crHandPoint;
    with Module.FullBDQuery do begin
      Close;
       SQL.Clear;
        SQL.Add('backup database Имя_БД to disk='''+SaveDialogFullBD.FileName+''' ');
       ExecSQL;
      Close;
    end;
    Screen.Cursor:=crDefault;
    Application.MessageBox(PChar('Резервное копирование сохранено успешно!'),'Архив', MB_ICONEXCLAMATION+MB_OK);
  end;
Восстановление БД

1. OpenDialogFullBD =это OpenDialog
2. Module.DbConn = это DataModule.ADOConnection

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.BitB_RestorClick(Sender: TObject);
var
  S: String;
begin
  if OpenDialogFullBD.Execute then
   begin
     Screen.Cursor:=crHandPoint;
      Module.DbConn.Connected:=False;
        S := 'ALTER DATABASE Имя_БД SET SINGLE_USER WITH ROLLBACK IMMEDIATE; use master;  drop database Имя_БД;'+
             'restore database Имя_БД from disk = ''' + OpenDialogFullBD.filename + '''; ALTER DATABASE Имя_БД SET MULTI_USER ';
        Module.DbConn.Execute(S);
       Module.DbConn.Connected:=True;
      Screen.Cursor:=crDefault;
      Application.MessageBox(PChar('Восстановление завершено успешно!'+chr(13)+'Следует заново войти в программу!'),'Архив', MB_ICONEXCLAMATION+MB_OK);
    Application.Terminate;
  end;
0
 Аватар для Trukhanov_VP
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
19.09.2013, 13:32  [ТС]
Цитата Сообщение от xxbesoxx Посмотреть сообщение
резервное копирование БД
1. SaveDialogFullBD = это SaveDialog

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.BitB_BekClick(Sender: TObject);
begin
   if SaveDialogFullBD.Execute then
 begin
    Screen.Cursor:=crHandPoint;
    with Module.FullBDQuery do begin
      Close;
       SQL.Clear;
        SQL.Add('backup database Имя_БД to disk='''+SaveDialogFullBD.FileName+''' ');
       ExecSQL;
      Close;
    end;
    Screen.Cursor:=crDefault;
    Application.MessageBox(PChar('Резервное копирование сохранено успешно!'),'Архив', MB_ICONEXCLAMATION+MB_OK);
  end;
Восстановление БД

1. OpenDialogFullBD =это OpenDialog
2. Module.DbConn = это DataModule.ADOConnection

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.BitB_RestorClick(Sender: TObject);
var
  S: String;
begin
  if OpenDialogFullBD.Execute then
   begin
     Screen.Cursor:=crHandPoint;
      Module.DbConn.Connected:=False;
        S := 'ALTER DATABASE Имя_БД SET SINGLE_USER WITH ROLLBACK IMMEDIATE; use master;  drop database Имя_БД;'+
             'restore database Имя_БД from disk = ''' + OpenDialogFullBD.filename + '''; ALTER DATABASE Имя_БД SET MULTI_USER ';
        Module.DbConn.Execute(S);
       Module.DbConn.Connected:=True;
      Screen.Cursor:=crDefault;
      Application.MessageBox(PChar('Восстановление завершено успешно!'+chr(13)+'Следует заново войти в программу!'),'Архив', MB_ICONEXCLAMATION+MB_OK);
    Application.Terminate;
  end;
Спасибо конечно, но я оставлю свой вариант бэкапа и восстановаления БД!

Не по теме:

Лень переделывать! :-[

0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
19.09.2013, 13:34
Выложите ваши пример на форуме . Интересно как вы делайте (резервное копирование и восстановление)
0
 Аватар для Trukhanov_VP
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
19.09.2013, 13:39  [ТС]
xxbesoxx,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
procedure TfAdmin.SpeedButton14Click(Sender: TObject);
Var i: Integer;
    s1, s2: String;
begin
Forms.Screen.Cursor := 5;
If DirPath1.Text = '' Then Begin
Application.MessageBox(PChar('Не указан путь!'),'Предупреждение',48);
DirPath1.Color := RGB(250,92,92);
Forms.Screen.Cursor := crDefault;
Exit;
End;
If DbEditEh2.Text = '' Then Begin
Application.MessageBox(PChar('Имя BACKUP пустое!'),'Предупреждение',48);
DBEditEh2.Color := RGB(250,92,92);
DBEditEh2.SetFocus;
Forms.Screen.Cursor := crDefault;
Exit;
End;
Try
DMS_DATA.qM1_SelectCountStat.Close;
DMS_DATA.qM1_SelectCountStat.SQL.Text := 'INSERT INTO tSTATIC VALUES(' + QuotedStr(IntToStr(Statistic.PAC1)) + ',' +  QuotedStr(IntToStr(Statistic.PAC2)) + ',' + QuotedStr(IntToStr(Statistic.USL1)) + ',' + QuotedStr(IntToStr(Statistic.USL2)) + ',' + QuotedStr(IntToStr(Statistic.USL3)) + ',' + QuotedStr(FormatDateTime('yyyymmdd hh:nn:ss',Date() + Time())) + ',' + IntToStr(1) + ',' + QuotedStr(DbEditEh2.Text) + ')';
DMS_DATA.qM1_SelectCountStat.ExecSQL;
except
on e: exception do
 begin
   Forms.Screen.Cursor := crDefault;
   Application.MessageBox(Pchar('При добавлении записи в таблицу возникла ошибка: '+e.message),'Ошибка',48);
 end;
end;
s1 := DirPath1.Text;
For i := 1 To Length(s1) do
  If s1[i] = ':' Then s2 := s2 Else
    If s1[i] = '\' Then s2 := s2 + '_' Else s2 := s2 + s1[i];
Try
DMS_DATA.qM1_backUpDb.Close;
DMS_DATA.qM1_backUpDb.SQL.Text := ' BACKUP DATABASE ' + BASE + ' ' +
'TO DISK = ' + QuotedStr(DirPath1.Text + '\' + DbEditEh2.Text) + ' ' +
'WITH FORMAT, ' +
'MEDIANAME = ' + QuotedStr(s2) + ', ' +
'NAME = ' + QuotedStr('Full Backup of ' + BASE) + '; ';
DMS_DATA.qM1_backUpDb.ExecSQL;
except
on e: exception do
 begin
   Forms.Screen.Cursor := crDefault;
   Application.MessageBox(Pchar('При BACKUP DATABASE произошла ошибка: '+e.message),'Ошибка',48);
 end;
end;
If DBCheckBoxEh1.Checked Then If FileExists(PATH  + '\' + DbEditEh2.Text) Then
Begin
ShellExecute(Handle,'open',PChar(PATH + '\'),nil,nil,SW_SHOW);
End;
Forms.Screen.Cursor := crDefault;
end;
 
end;
procedure TfAdmin.SpeedButton15Click(Sender: TObject);
Var DirPath: String;
begin
Forms.Screen.Cursor := 5;
If FE2.FileName = '' Then Begin
Application.MessageBox(PChar('Выберите файл!'),'Предупреждение',48);
FE2.Color := RGB(250,92,92);
Forms.Screen.Cursor := crDefault;
Exit;
End;
If DbEditEh3.Text = '' Then Begin
Application.MessageBox(PChar('Введите имя БД!'),'Предупреждение',48);
DbEditEh3.Color := RGB(250,92,92);
Forms.Screen.Cursor := crDefault;
Exit;
End;
If MessageBox(Handle,'Вы действительно хотите восстановить резервную копию БД?','Восстановление БД',mb_YesNo or mb_iconquestion) = 6 Then Begin
DirPath := FE2.FileName;
Try
DMS_DATA.qM1_backUpDb.Close;
DMS_DATA.qM1_backUpDb.SQL.Text := 'RESTORE DATABASE [' + DbEditEh3.Text + '] FROM  DISK = N' + QuotedStr(DirPath) + ' WITH  FILE = 1,  MOVE N' + QuotedStr('PS') + ' TO N' + QuotedStr('C:\PROJECTS\Database\PS\' + DbEditEh3.Text + '.mdf') + ',  MOVE N' + QuotedStr('PS_log') + ' TO N' + QuotedStr('C:\PROJECTS\Database\PS\' + DbEditEh3.Text + '_log.ldf') + ',  NOUNLOAD,  STATS = 10 ';
DMS_DATA.qM1_backUpDb.ExecSQL;
except
on e: exception do
 begin
   Forms.Screen.Cursor := crDefault;
   Application.MessageBox(Pchar('Произошла ошибка при восстановлении БД из BAK файла: '+e.message),'Ошибка',48);
   Exit;
 end;
end;
Application.MessageBox(Pchar('База ' + DbEditEh3.Text + ' успешно восстановлена!'),'Выполнено',64);
End;
Forms.Screen.Cursor := crDefault;
end;
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
19.09.2013, 13:43
Интересно . вечером посмотрю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2013, 13:43
Помогаю со студенческими работами здесь

Delphi 7.0 + ADO + SQL Server 2005 реализация Undo
Имеется база данных с таблицой в которой имеется поле усле оно = True то запись считается удаленной, также имеется запрос (SQL)...

Вывод данных из DataTable в базу данных SQL Server 2005
Доброго времени суток. Существует таблица DataTable dt = new DataTable(); Как передать данные из этой таблици в sql server 2005?

Не подключается к базе данных (sql server 2005)
Не подключается к базе данных using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

База данных, основанная на службах vs База данных SQL Server
Доброго времени суток. Делал я, значит, Data Access Layer для ASP.NET MVC проекта. Создал обычную библиотеку классов, моделей туда...

Не могу добавить базу данных sql server 2005
Я в этом мало что понимаю делаю все по инстр но выдало ошибку 5172 заголовок файла не является действительным файла базы данных свойство...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru