40 |
|
TIBCMLocalDBSupport = class(TCustomIBLocalDBSupport) |
41 |
|
private |
42 |
|
FOnLogMessage: TOnLogMessage; |
43 |
+ |
FDatabasePath: string; |
44 |
|
procedure Add2Log(Sender: TObject; Msg: string); |
45 |
|
procedure DoUpgrade(IBXScript: TIBXScript; TargetVersionNo: integer); |
46 |
|
procedure WriteLog(Msg: string); |
47 |
+ |
procedure HandleCreateDatabase(Sender: TObject; var DatabaseFileName: string); |
48 |
|
protected |
49 |
|
function CreateNewDatabase(DBName:string; DBParams: TStrings; DBArchive: string): boolean; override; |
50 |
|
function RestoreDatabaseFromArchive(DBName:string; DBParams: TStrings; aFilename: string): boolean; override; |
103 |
|
OnLogMessage(self,Msg); |
104 |
|
end; |
105 |
|
|
106 |
+ |
procedure TIBCMLocalDBSupport.HandleCreateDatabase(Sender: TObject; |
107 |
+ |
var DatabaseFileName: string); |
108 |
+ |
begin |
109 |
+ |
DatabaseFileName := FDatabasePath; |
110 |
+ |
end; |
111 |
+ |
|
112 |
|
function TIBCMLocalDBSupport.CreateNewDatabase(DBName: string; |
113 |
|
DBParams: TStrings; DBArchive: string): boolean; |
114 |
|
var Service: TIBRestoreService; |
115 |
+ |
Ext: string; |
116 |
|
begin |
117 |
+ |
Result := true; |
118 |
|
CreateDir(ExtractFileDir(DBName)); |
119 |
< |
Service := TIBRestoreService.Create(self); |
120 |
< |
with Service do |
119 |
> |
Ext := AnsiUpperCase(ExtractFileExt(DBArchive)); |
120 |
> |
if Ext = '.GBK' then |
121 |
> |
begin |
122 |
> |
Service := TIBRestoreService.Create(self); |
123 |
> |
with Service do |
124 |
> |
try |
125 |
> |
SetDBParams(DBParams); |
126 |
> |
LoginPrompt := false; |
127 |
> |
BackupFile.Clear; |
128 |
> |
DatabaseName.Clear; |
129 |
> |
Options := [CreateNewDB]; |
130 |
> |
BackupFile.Add(DBArchive); |
131 |
> |
DatabaseName.Add(DBName); |
132 |
> |
Active := true; |
133 |
> |
WriteLog(sCreatingDatabase); |
134 |
> |
ServiceStart; |
135 |
> |
try |
136 |
> |
while not Eof do |
137 |
> |
WriteLog(Trim(GetNextLine)); |
138 |
> |
finally |
139 |
> |
Active := false |
140 |
> |
end; |
141 |
> |
finally |
142 |
> |
Free |
143 |
> |
end; |
144 |
> |
end |
145 |
> |
else |
146 |
> |
if Ext = '.SQL' then |
147 |
> |
with TIBXScript.Create(self) do |
148 |
|
try |
149 |
< |
SetDBParams(Service,DBParams); |
150 |
< |
LoginPrompt := false; |
151 |
< |
BackupFile.Clear; |
152 |
< |
DatabaseName.Clear; |
153 |
< |
Options := [CreateNewDB]; |
117 |
< |
BackupFile.Add(DBArchive); |
118 |
< |
DatabaseName.Add(DBName); |
119 |
< |
Active := true; |
120 |
< |
WriteLog(sCreatingDatabase); |
121 |
< |
ServiceStart; |
122 |
< |
try |
123 |
< |
while not Eof do |
124 |
< |
WriteLog(Trim(GetNextLine)); |
125 |
< |
finally |
126 |
< |
Active := false |
127 |
< |
end; |
149 |
> |
Database := self.Database; |
150 |
> |
FDatabasePath := DBName; |
151 |
> |
OnCreateDatabase := @HandleCreateDatabase; |
152 |
> |
WriteLog(sCreatingDatabase); |
153 |
> |
Result := RunScript(DBArchive); |
154 |
|
finally |
155 |
|
Free |
156 |
< |
end; |
157 |
< |
|
156 |
> |
end |
157 |
> |
else |
158 |
> |
raise Exception.CreateFmt('Archive file (%s) has an unknown extension',[DBArchive]); |
159 |
|
end; |
160 |
|
|
161 |
|
function TIBCMLocalDBSupport.RestoreDatabaseFromArchive(DBName: string; |
162 |
|
DBParams: TStrings; aFilename: string): boolean; |
163 |
|
var Service: TIBRestoreService; |
164 |
|
begin |
165 |
+ |
Result := true; |
166 |
|
Service := TIBRestoreService.Create(self); |
167 |
|
with Service do |
168 |
|
try |
169 |
< |
SetDBParams(Service,DBParams); |
169 |
> |
SetDBParams(DBParams); |
170 |
|
LoginPrompt := false; |
171 |
|
BackupFile.Clear; |
172 |
|
DatabaseName.Clear; |
191 |
|
var IBXScript: TIBXScript; |
192 |
|
IBTransaction: TIBTransaction; |
193 |
|
begin |
194 |
+ |
Result := true; |
195 |
|
IBXScript := TIBXScript.Create(self); |
196 |
|
IBTransaction := TIBTransaction.Create(self); |
197 |
|
try |
203 |
|
IBTransaction.Params.Clear; |
204 |
|
IBTransaction.Params.Add('concurrency'); |
205 |
|
IBTransaction.Params.Add('wait'); |
206 |
< |
IBXScript.GetParamValue := @HandleGetParamValue; |
206 |
> |
if assigned(UpgradeConf) then |
207 |
> |
IBXScript.GetParamValue := @UpgradeConf.GetParamValue; |
208 |
|
DoUpgrade(IBXScript, TargetVersionNo); |
209 |
|
finally |
210 |
|
IBXScript.Free; |
217 |
|
DBParams: TStrings; aFilename: string): boolean; |
218 |
|
var Service: TIBBackupService; |
219 |
|
begin |
220 |
+ |
Result := true; |
221 |
|
Service := TIBBackupService.Create(self); |
222 |
|
with Service do |
223 |
|
try |
224 |
< |
SetDBParams(Service,DBParams); |
224 |
> |
SetDBParams(DBParams); |
225 |
|
LoginPrompt := false; |
226 |
|
BackupFile.Clear; |
227 |
|
DatabaseName := DBName; |