Für eine bessere Fortschrittsanzeige und auch um Fehler besser finden zu können, haben wir uns entschlossen eine SQL Datei nicht im Gesamten auszuführen, sondern in eigene Bereiche aufzuteilen und jeden Bereich separat gegenüber der Datenbank auszuführen. Dabei wird nach dem Kommentar --CP_SQL-- gesucht.
GenerateUpdateScript Tool:
Hilfstool zum Erstellen von SQL Anweisungen:
In netFrame kann man mit dem Dialog "GenerateUpdateScript" die nötigen SQL Anweisungen erstellen lassen.
- Tabellen Strukturen
- Tabellen Inhalte
- Spezielle DMS Einstellungen
Syntax:
--CP_SQL(DescriptionDE: "Beschreibung Deutsch", DescriptionEN: "Beschreibung Englisch", ExecuteForEachCompany: false, DBName: "TIG", Transaction: "On", RunOnce: "SomeKey")--
DescriptionDE:
Beschreibung des Bereichs auf Deutsch. Dieser Text wird auch in der Fortschrittsanzeige angezeigt.
DescriptionEN:
Beschreibung des Bereichs auf Deutsch. Dieser Text wird auch in der Fortschrittsanzeige angezeigt.
ExecuteForEachCompany:
Optional. Ist dieses Attribut mit true hinterlegt, so werden alle Abfragen in diesen Bereich für jeden Mandanten ausgeführt. Benötigen wir für das DMS. Dabei wird in der DMS Datenbank für jeden Mandant eine Stored Procedure angelegt. Im Namen der Stored Procedure wird das Mandantenkürzel verwendet z.B. CP_dmsTriggerBank_KUA, CP_dmsTriggerBank_KUB usw. (das Kürzel wird über den Parameter $CO_INITIALS erstellt – siehe Parameter)
DBName:
Optional. Ist in diesem Attribut ein Datenbank Name angegeben, wird die Anweisung im aktuellen Abschnitt nur ausgeführt wenn der DB Name übereinstimmt.
RunOnce:
Optional. Wenn RunOnce: "SOME_KEY" angegeben wird, werden alle folgenden Anweisungen bis zum nächsten CP_SQL nur einmal ausgeführt. "SOME_KEY" durch einen eindeutigen Key pro RunOnce CP_SQL Abschnitt ersetzen.
Transaction:
Optional. Mit Transaction: "Off" kann das automatische starten einer Transaktion im netFrameServerSetup deaktiviert werden.
Error:
Optional. Mit Error: "continue" werden Fehler beim Ausführen der SQL Anweisung ignoriert
Beispiel:
--CP_SQL(DescriptionDE: "CP_VARIABLE", DescriptionEN: "CP_VARIABLE")--
--*********************************************************************************************************************--
if not exists (select * from dbo.sysobjects where id =
object_id(N'dbo.CP_VARIABLE') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE dbo.CP_VARIABLE
(
VA_ID varchar (36) not null
) ON PRIMARY
END
GO
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'varchar', 'CO_ID', '36', , , 1
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'int', 'VA_NUMBER', , , , 1
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'varchar', 'VA_NAME', '50', , , 1
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'varchar', 'VA_TYPE', '50', , , 1
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'varchar', 'VA_VALUE', '1024', , , 1
exec dbo.CP_UPDATE_ADD_FIELD 'dbo', 'CP_VARIABLE', 'varchar', 'VA_DESCRIPTION', '2048', , , 1
exec CP_UPDATE_ADD_PRIMARYKEY 'CP_VARIABLE', 'PK_CP_VARIABLE', 'VA_ID', , ''
GO
Für jeden Bereich wird in der Fortschrittsanzeige ein neuer Text je nach Sprache angezeigt und auch gegenüber der Datenbank gesondert ausgeführt d.h. es wird nicht die ganze Datei auf einmal ausgeführt.