![]() |
AW: MSSQL Replikation
Wenn es solche Einschränkungen bei OUTPUT gibt, würde ich es erstmal mir einer Replikationstabelle als Test ausprobieren, bevor ich alles umbaue.
Sieht irgendwie nach der Frage des kleineren Übels aus. |
AW: MSSQL Replikation
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...8-)
Zitat:
[Werbung ON] Vieleicht hat mir geholfen daß ich die SQL in Dateien/Ressourcen gespeichert habe. :thumb: Damit gab es "quasi" keinen Umbau am Quelltext. :thumb: Siehe Bild... Quelltext Old:
Delphi-Quellcode:
Quelltext New:
function TDatabaseBase.GetLastId: Integer;
begin Result := FConnection.GetLastAutoGenValue(''); end; ... function TDatabase.Write(User: TSEAMUser): Integer; var Qry: TFDQuery; begin Result := -1; Qry := CreateQuery; try case User.State of sdsNew: begin Qry.SQL.Text := GetSQLByName('COM_INSERT_USERS'); ... Qry.ParamByName('ACC').AsInteger := User.AccessCount; Qry.ExecSQL; User.ID := GetLastId; Result := User.ID; end; sdsModified: begin Qry.SQL.Text := GetSQLByName('COM_EDIT_USERS'); Qry.ParamByName('ID').AsInteger := User.ID; Qry.ParamByName('ROI1').AsInteger := User.Role_1.ID; ...
Delphi-Quellcode:
Danke nochmal. :wink:
function TDatabaseBase.InsertWithGetLastID(Query: TFDQuery): Integer;
begin Query.Open; Result := Query.FieldByName('LastID').AsInteger; end; ... function TDatabase.Write(User: TSEAMUser): Integer; var Qry: TFDQuery; begin Result := -1; Qry := CreateQuery; try case User.State of sdsNew: begin Qry.SQL.Text := GetSQLByName('COM_INSERT_USERS'); ... Qry.ParamByName('ACC').AsInteger := User.AccessCount; User.ID := InsertWithGetLastID(Qry); Result := User.ID; end; sdsModified: begin Qry.SQL.Text := GetSQLByName('COM_EDIT_USERS'); Qry.ParamByName('ID').AsInteger := User.ID; Qry.ParamByName('ROI1').AsInteger := User.Role_1.ID; ... |
AW: MSSQL Replikation
Zitat:
Mein Hinweis zum Umbau galt eher der Problematik eines dosierten Funktionstests bzw. dann auch Praxistests rund um die Replikation. Die "Randbedingungen" bzw. Einschränkungen bei der Funkiont OUTPUT scheinen mir entgegen meiner Empfehlung nicht besonders sexy. Und da fehlt mir selbst die Praxiserfahrung mit MS SQL. Wenn ich mich nicht irre, war die Doku, die ich nach Deiner Trigger Problematik angeschaut hatte, halbwegs aktuell (SQL Server 2019), aber voller Einschränkungen. Ich hoffe es funktioniert im Realbetrieb besser als die IDENTITY Verfahren! |
Query-
Zitat:
Delphi-Quellcode:
:nerd:{$R *.dfm} |
AW: MSSQL Replikation
Zitat:
Uwe hat Recht, aber da würde ich anmerken, Ressource ist nicht gleich Ressource. Wenn man ausschließlich mit Delphi arbeitet, spielt der Zugang und die Änderbarkeit der Ressourcen nicht so eine große Rolle. Im Gegenteil, manchmal ist ja die Möglichkeit, alles in einer Anwendung zu integrieren (und as is auszuliefern) auch sehr gewollt und mit der resultierenden Statik auch besonders robust. Bedeutet aber auch, dass Ressourcenänderungen mit der Neukompilation und Verteilung verbunden sind (außer, man fährt da mehrgleisig, womit der Faktor Robustheit an der Stelle aber auch hops geht.) Ich kenne die Komponenten von haentschan nicht, aber Zugängigkeit und Dynamik der (ausgelagerten) Ressourcen sehe ich jedoch als wichtigen Faktor. Und mal kurz durchgespielt: Wenn ich mit transparent zugängigen, externen Ressourcen loslege, ist es aus dieser Richtung auch nicht sehr aufwändig, bei Bedarf Ressourcen zu embedden, automatisert und mir klaren Verantwortlichkeiten. Da würde mir ein Ressourcenmanager wie von haentschman wahrscheinlich besser gefallen, als ein *.dfm. |
AW: MSSQL Replikation
Zitat:
Anleitung: ![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz