Beispiel für Datenbrücke
Die Lokale Datenbrücke wurde geschaffen, um auf Daten, die am lokalen Server liegen, zugreifen zu können.
DataBridge.json
Am lokalen Server gehört in der Config-Datei DataBridge.json, die Verbindung konfiguirert und aktiviert. Ein Beispiel für die Einrichtung und dem Connection-String können Sie im unten angeführten JSON entnehmen.
{
"Connections": {
"CosmoTestDB": {
"Use Connection": true,
"Description": "Your Connection String can look like this",
"Connection String": "Server=localhost;Database=CosmoTestDB;User Id=TestUser;Password=YourPassword;MultipleActiveResultSets=true;Encrypt=True;TrustServerCertificate=True;",
"Type": "MSSql"
}
}
}
Type legt das Zielsystem fest. Unterstützt wird derzeit ein Zugriff auf Microsoft SQL Server.
Important
Im ConnectionString sollte ein User mit eingeschränkten Rechten hinterlegt werden. An dieser Stelle wird festgelegt, welche Daten über Remotezugriff ausgelesen oder sogar verändert werden dürfen!
Dienstverbindung einrichten in Business Central
In der Dienstverbindung für Ihren Service, müssen Sie eine "Lokale Datenbrücke" hinzufügen. In dieser können Sie über das Look Up alle aktiven konfigurierten Einrichtungen auslesen und auswählen. Mit Feld Roolback nach Transaction wird nach dem absetzen des Statements automatsch ein Rollback von diesem ausgeführt.
Code Beispiel für die Anbindung
Es werden aktuell zwei Funktionen angeboten:
- ExecuteNonQuery - Es wird die "Message" Antwort als Ergebnis zurückgegeben
- GetSqlResultDataTable - Es wir die abgefragte SQL Tabelle als JSON Format zurückgegeben
action(SelectData)
{
Caption = 'Select Data';
ApplicationArea = All;
trigger OnAction()
var
CCSCOLIDirectConDataBridge: Codeunit "CCS COLI Direct Con DataBridge";
DirectConnection: Record "CCS COLI Direct Connection";
PayLoad: JsonObject;
JSONData: JsonArray;
JsonToken: JsonToken;
response: Text;
begin
DirectConnection.Reset();
DirectConnection.SetRange("Connection Type", DirectConnection."Connection Type"::"Direct Connection Type Local Data Bridge");
DirectConnection.FindFirst();
CCSCOLIDirectConDataBridge.GetSqlResultDataTable(DirectConnection, 'Select * from Product where Id < 4', PayLoad);
if PayLoad.WriteTo(response) then
Message(response);
PayLoad.SelectToken('$.Payload.[''Data Table''].Data', JsonToken);
JSONData := JsonToken.AsArray();
// Go throw all Line and show them
foreach JsonToken in JSONData do begin
Message(Format(JsonToken));
end;
end;
}
Important
Für SQL werden bestimmte Befehle abgelehnt: 'DROP, GO, TRUNCATE, USE. Damit werden kritische Operationen von vornherein verhindert. Falls sie denoch verwendet werden verweigert der Host die Ausführung mit einer Fehlermeldung.