OmniSeller.ini Referenz: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
= | |||
Die <code> | = OmniSellerUpload.ini Referenz = | ||
Die <code>OmniSellerUpload.ini</code> ist die zentrale Konfigurationsdatei des OmniSeller Upload-Service. Sie befindet sich im Installationsverzeichnis des Services. | |||
== Dateiformat == | == Dateiformat == | ||
| Zeile 10: | Zeile 11: | ||
Schluessel = Wert | Schluessel = Wert | ||
</source>'''Hinweis:''' Bei Boolean-Werten gilt: <code>0</code> = deaktiviert, <code>1</code> = aktiviert. | </source> | ||
'''Hinweis:''' Bei Boolean-Werten gilt: <code>0</code> = deaktiviert, <code>1</code> = aktiviert. | |||
== Sektionen == | == Sektionen == | ||
| Zeile 17: | Zeile 20: | ||
Datenbankverbindung zur ERP-Datenbank (Sage 100). | Datenbankverbindung zur ERP-Datenbank (Sage 100). | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>ConnectionString</code> | | <code>ConnectionString</code> | ||
|String | | String | ||
|– | | – | ||
|SQL Server Connection String | | SQL Server Connection String | ||
|- | |- | ||
|<code>ConnectionStringEncrypted</code> | | <code>ConnectionStringEncrypted</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Ob der ConnectionString verschlüsselt ist | | Ob der ConnectionString verschlüsselt ist | ||
|} | |} | ||
'''Beispiel:'''<source lang="ini"> | '''Beispiel:'''<source lang="ini"> | ||
| Zeile 40: | Zeile 43: | ||
ConnectionStringEncrypted = 0 | ConnectionStringEncrypted = 0 | ||
</source>'''Hinweis:''' Der ConnectionString kann über das Setup oder den Service selbst verschlüsselt werden. Bei <code>ConnectionStringEncrypted = 1</code> wird DPAPI zur Entschlüsselung verwendet. | </source> | ||
'''Hinweis:''' Der ConnectionString kann über das Setup oder den Service selbst verschlüsselt werden. Bei <code>ConnectionStringEncrypted = 1</code> wird DPAPI zur Entschlüsselung verwendet. | |||
=== [Host] === | === [Host] === | ||
Netzwerk-Einstellungen für die TCP-Kommunikation. | Netzwerk-Einstellungen für die TCP-Kommunikation. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>Port</code> | | <code>Port</code> | ||
|Integer | | Integer | ||
|10084 | | 10084 | ||
|TCP-Port für Client-Signale (z.B. vom Setup) | | TCP-Port für Client-Signale (z.B. vom Setup) | ||
|} | |} | ||
'''Beispiel:'''<source lang="ini"> | '''Beispiel:'''<source lang="ini"> | ||
| Zeile 62: | Zeile 67: | ||
</source> | </source> | ||
=== [OmniSellerAPI] === | === [OmniSellerAPI] === | ||
Verbindung zur OmniSeller Cloud-API. | Verbindung zur OmniSeller Cloud-API. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>BaseURL</code> | | <code>BaseURL</code> | ||
|String | | String | ||
|<nowiki>https://api.omnisellerservices.de</nowiki> | | <nowiki>https://api.omnisellerservices.de</nowiki> | ||
|API-Basis-URL | | API-Basis-URL | ||
|- | |- | ||
| - | | - | ||
| - | | - | ||
|– | | – | ||
| - | | - | ||
|- | |- | ||
|<code>Heartbeat</code> | | <code>Heartbeat</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Azure Service Bus Heartbeat aktivieren | | Azure Service Bus Heartbeat aktivieren | ||
|- | |- | ||
|<code>Endpoint</code> | | <code>Endpoint</code> | ||
|String | | String | ||
|(intern) | | (intern) | ||
|Optionaler Custom Service Bus Endpoint | | Optionaler Custom Service Bus Endpoint | ||
|} | |} | ||
'''Beispiel:'''<source lang="ini"> | '''Beispiel:'''<source lang="ini"> | ||
| Zeile 95: | Zeile 99: | ||
[OmniSellerAPI] | [OmniSellerAPI] | ||
BaseURL = | BaseURL = xyz | ||
Heartbeat = 0 | Heartbeat = 0 | ||
| Zeile 104: | Zeile 106: | ||
</source> | </source> | ||
=== [ERP] === | === [ERP] === | ||
ERP-System Einstellungen. | ERP-System Einstellungen. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>Type</code> | | <code>Type</code> | ||
|Integer | | Integer | ||
|0 | | 0 | ||
|ERP-Typ (0 = Sage 100) | | ERP-Typ (0 = Sage 100) | ||
|} | |} | ||
| Zeile 122: | Zeile 123: | ||
Cache-Einstellungen für Artikeldaten. | Cache-Einstellungen für Artikeldaten. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>EnableTextCache</code> | | <code>EnableTextCache</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Text-Cache für Artikeltexte aktivieren | | Text-Cache für Artikeltexte aktivieren | ||
|- | |- | ||
|<code>EnableLazyLoad</code> | | <code>EnableLazyLoad</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Lazy Loading für Cache aktivieren | | Lazy Loading für Cache aktivieren | ||
|- | |- | ||
|<code>DailyFullRefreshHour</code> | | <code>DailyFullRefreshHour</code> | ||
|Integer | | Integer | ||
| -1 | | -1 | ||
|Stunde für täglichen Cache-Refresh (-1 = deaktiviert) | | Stunde für täglichen Cache-Refresh (-1 = deaktiviert) | ||
|} | |} | ||
'''Beispiel:'''<source lang="ini"> | '''Beispiel:'''<source lang="ini"> | ||
| Zeile 153: | Zeile 154: | ||
</source> | </source> | ||
=== [Upload] === | === [Upload] === | ||
Upload-Verhalten. | Upload-Verhalten. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>DoStorageAreas</code> | | <code>DoStorageAreas</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Lagerorte mit hochladen | | Lagerorte mit hochladen | ||
|- | |- | ||
|<code>DoXMLMediaAttributs</code> | | <code>DoXMLMediaAttributs</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|XML-Media-Attribute verarbeiten | | XML-Media-Attribute verarbeiten | ||
|} | |} | ||
| Zeile 176: | Zeile 176: | ||
JSON-Logging in die Datenbank. | JSON-Logging in die Datenbank. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>RetentionDays</code> | | <code>RetentionDays</code> | ||
|Integer | | Integer | ||
|3 | | 3 | ||
|Anzahl Tage die Log-Einträge aufbewahrt werden | | Anzahl Tage die Log-Einträge aufbewahrt werden | ||
|- | |- | ||
|<code>DropRecreateOnCleanupFail</code> | | <code>DropRecreateOnCleanupFail</code> | ||
|0/1 | | 0/1 | ||
|1 | | 1 | ||
|Tabelle neu anlegen wenn Cleanup fehlschlägt | | Tabelle neu anlegen wenn Cleanup fehlschlägt | ||
|} | |} | ||
| Zeile 195: | Zeile 195: | ||
Spezielle Logging-Optionen. | Spezielle Logging-Optionen. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>Pricelog</code> | | <code>Pricelog</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|Detailliertes Preis-Debugging aktivieren | | Detailliertes Preis-Debugging aktivieren | ||
|} | |} | ||
Bei <code>Pricelog = 1</code> wird eine Datei <code>preislogiclog.txt</code> im Service-Verzeichnis erstellt mit: | Bei <code>Pricelog = 1</code> wird eine Datei <code>preislogiclog.txt</code> im Service-Verzeichnis erstellt mit: | ||
* Queue-Einträge die verarbeitet werden | * Queue-Einträge die verarbeitet werden | ||
* Aktivierte Tracking-Optionen | * Aktivierte Tracking-Optionen | ||
* SQL-Abfragen | * SQL-Abfragen | ||
* Übersprungene Artikel und Gründe | * Übersprungene Artikel und Gründe | ||
| Zeile 218: | Zeile 215: | ||
Automatische Erkennung von Datenänderungen. Siehe auch: [[OmniSeller Upload-Service: Change Tracking]] | Automatische Erkennung von Datenänderungen. Siehe auch: [[OmniSeller Upload-Service: Change Tracking]] | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Typ | ! Typ | ||
!Standard | ! Standard | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>Enabled</code> | | <code>Enabled</code> | ||
|0/1 | | 0/1 | ||
|0 | | 0 | ||
|'''Master-Switch''' – muss 1 sein damit Change Tracking funktioniert | | '''Master-Switch''' – muss 1 sein damit Change Tracking funktioniert | ||
|- | |- | ||
|<code>IntervalMs</code> | | <code>IntervalMs</code> | ||
|Integer | | Integer | ||
|5000 | | 5000 | ||
|Prüf-Intervall in Millisekunden | | Prüf-Intervall in Millisekunden | ||
|} | |} | ||
==== Tracking-Optionen ==== | ==== Tracking-Optionen ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Schlüssel | ! Schlüssel | ||
!Tabelle | ! Tabelle | ||
!Beschreibung | ! Beschreibung | ||
|- | |- | ||
|<code>TrackPrices</code> | | <code>TrackPrices</code> | ||
|KHKPreislistenArtikel | | KHKPreislistenArtikel | ||
|Einzelpreise in Preislisten | | Einzelpreise in Preislisten | ||
|- | |- | ||
|<code>TrackKHKPreislisten</code> | | <code>TrackKHKPreislisten</code> | ||
|KHKPreislisten | | KHKPreislisten | ||
|Gültigkeitsänderung der Preisliste selbst | | Gültigkeitsänderung der Preisliste selbst | ||
|- | |- | ||
|<code>TrackPriceListValidity</code> | | <code>TrackPriceListValidity</code> | ||
|– | | – | ||
|Täglicher Check ob Preislisten gültig/ungültig wurden | | Täglicher Check ob Preislisten gültig/ungültig wurden | ||
|- | |- | ||
|<code>TrackAttributes</code> | | <code>TrackAttributes</code> | ||
|oHTKAttributeEntities | | oHTKAttributeEntities | ||
|Artikelattribute | | Artikelattribute | ||
|- | |- | ||
|<code>TrackKHKArtikel</code> | | <code>TrackKHKArtikel</code> | ||
|KHKArtikel | | KHKArtikel | ||
|Artikel-Stammdaten | | Artikel-Stammdaten | ||
|- | |- | ||
|<code>TrackKHKArtikelVarianten</code> | | <code>TrackKHKArtikelVarianten</code> | ||
|KHKArtikelVarianten | | KHKArtikelVarianten | ||
|Artikelvarianten | | Artikelvarianten | ||
|- | |- | ||
|< | | | ||
| | <br> | ||
| | |||
|- | <br> | ||
|<code>TrackKHKArtikelStueckliste</code> | | | ||
|KHKArtikelStueckliste | <br> | ||
|Stücklisten | |- | ||
|- | | <code>TrackKHKArtikelStueckliste</code> | ||
|<code>TrackHTKOmniAlternativeSKU</code> | | KHKArtikelStueckliste | ||
|HTKOmniAlternativeSKU | | Stücklisten | ||
|Alternative SKUs | |- | ||
|- | | <code>TrackHTKOmniAlternativeSKU</code> | ||
|<code>TrackOHTKSyncData</code> | | HTKOmniAlternativeSKU | ||
|oHTKSyncData | | Alternative SKUs | ||
|Sync-Daten | |- | ||
|- | | <code>TrackOHTKSyncData</code> | ||
|<code>TrackOHTKSyncDataClient</code> | | oHTKSyncData | ||
|oHTKSyncDataClient | | Sync-Daten (nur Trigger als Auslöser möglich) | ||
|Client-Sync-Daten | |- | ||
| <code>TrackOHTKSyncDataClient</code> | |||
| oHTKSyncDataClient | |||
| Client-Sync-Daten (Medien) | |||
|} | |} | ||
'''Beispiel für Preis-Tracking:'''<source lang="ini"> | '''Beispiel für Preis-Tracking:'''<source lang="ini"> | ||
| Zeile 299: | Zeile 299: | ||
</source> | </source> | ||
== <br>Neue Funktion betreffend CrossSelling im Bereich Upload:<br>[Upload]<br> CrossSellingOnFirstUpload=0 ; Default: kein CrossSelling beim ersten Upload<br> CrossSellingOnFirstUpload=1 ; NEU: CrossSelling auch beim ersten Upload laden<br><br><br>Vollständiges Beispiel == | |||
== | |||
<source lang="ini"> | <source lang="ini"> | ||
| Zeile 358: | Zeile 314: | ||
[OmniSellerAPI] | [OmniSellerAPI] | ||
BaseURL = https://api. | BaseURL = https://api.xxxxxxxxxxxxxxxxxxxxxxxxxxxxx | ||
Heartbeat = 0 | Heartbeat = 0 | ||
| Zeile 420: | Zeile 376: | ||
TrackOHTKSyncDataClient = 0 | TrackOHTKSyncDataClient = 0 | ||
[ | [Upload] | ||
DefaultLanguage = DE | |||
</source> | </source> | ||
== Hinweise == | == Hinweise == | ||
* Nach Änderungen an der INI-Datei muss der Service neu gestartet werden | * Nach Änderungen an der INI-Datei muss der Service neu gestartet werden | ||
* Die Datei wird beim ersten Start automatisch mit Standardwerten erstellt | * Die Datei wird beim ersten Start automatisch mit Standardwerten erstellt | ||
* Fehlende Schlüssel werden mit Standardwerten behandelt | * Fehlende Schlüssel werden mit Standardwerten behandelt | ||
* Bei verschlüsseltem ConnectionString: Nicht manuell bearbeiten! | * Bei verschlüsseltem ConnectionString: Nicht manuell bearbeiten! | ||
| Zeile 447: | Zeile 391: | ||
* [[OmniSeller Upload-Service Installation]] | * [[OmniSeller Upload-Service Installation]] | ||
* [[OmniSeller Upload-Service: Change Tracking]] | * [[OmniSeller Upload-Service: Change Tracking]] | ||
* [[OmniSeller Preislogik]] | * [[OmniSeller Preislogik]] | ||
Aktuelle Version vom 25. Februar 2026, 12:08 Uhr
OmniSellerUpload.ini Referenz
Die OmniSellerUpload.ini ist die zentrale Konfigurationsdatei des OmniSeller Upload-Service. Sie befindet sich im Installationsverzeichnis des Services.
Dateiformat
Die Datei verwendet das klassische INI-Format mit Sektionen und Schlüssel-Wert-Paaren:
[Sektion]
Schluessel = Wert
Hinweis: Bei Boolean-Werten gilt: 0 = deaktiviert, 1 = aktiviert.
Sektionen
[DatabaseSettings]
Datenbankverbindung zur ERP-Datenbank (Sage 100).
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
ConnectionString
|
String | – | SQL Server Connection String |
ConnectionStringEncrypted
|
0/1 | 0 | Ob der ConnectionString verschlüsselt ist |
Beispiel:
[DatabaseSettings]
ConnectionString = Server=SQLSERVER;Database=OLDemoReweAbfD#;User Id=sa;Password=geheim;
ConnectionStringEncrypted = 0
Hinweis: Der ConnectionString kann über das Setup oder den Service selbst verschlüsselt werden. Bei ConnectionStringEncrypted = 1 wird DPAPI zur Entschlüsselung verwendet.
[Host]
Netzwerk-Einstellungen für die TCP-Kommunikation.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
Port
|
Integer | 10084 | TCP-Port für Client-Signale (z.B. vom Setup) |
Beispiel:
[Host]
Port = 10084
[OmniSellerAPI]
Verbindung zur OmniSeller Cloud-API.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
BaseURL
|
String | https://api.omnisellerservices.de | API-Basis-URL |
| - | - | – | - |
Heartbeat
|
0/1 | 0 | Azure Service Bus Heartbeat aktivieren |
Endpoint
|
String | (intern) | Optionaler Custom Service Bus Endpoint |
Beispiel:
[OmniSellerAPI]
BaseURL = xyz
Heartbeat = 0
Endpoint =
[ERP]
ERP-System Einstellungen.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
Type
|
Integer | 0 | ERP-Typ (0 = Sage 100) |
[Cache]
Cache-Einstellungen für Artikeldaten.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
EnableTextCache
|
0/1 | 0 | Text-Cache für Artikeltexte aktivieren |
EnableLazyLoad
|
0/1 | 0 | Lazy Loading für Cache aktivieren |
DailyFullRefreshHour
|
Integer | -1 | Stunde für täglichen Cache-Refresh (-1 = deaktiviert) |
Beispiel:
[Cache]
EnableTextCache = 0
EnableLazyLoad = 1
DailyFullRefreshHour = 3
[Upload]
Upload-Verhalten.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
DoStorageAreas
|
0/1 | 0 | Lagerorte mit hochladen |
DoXMLMediaAttributs
|
0/1 | 0 | XML-Media-Attribute verarbeiten |
[JsonLog]
JSON-Logging in die Datenbank.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
RetentionDays
|
Integer | 3 | Anzahl Tage die Log-Einträge aufbewahrt werden |
DropRecreateOnCleanupFail
|
0/1 | 1 | Tabelle neu anlegen wenn Cleanup fehlschlägt |
[Log]
Spezielle Logging-Optionen.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
Pricelog
|
0/1 | 0 | Detailliertes Preis-Debugging aktivieren |
Bei Pricelog = 1 wird eine Datei preislogiclog.txt im Service-Verzeichnis erstellt mit:
- Queue-Einträge die verarbeitet werden
- Aktivierte Tracking-Optionen
- SQL-Abfragen
- Übersprungene Artikel und Gründe
[ChangeTracking]
Automatische Erkennung von Datenänderungen. Siehe auch: OmniSeller Upload-Service: Change Tracking
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
Enabled
|
0/1 | 0 | Master-Switch – muss 1 sein damit Change Tracking funktioniert |
IntervalMs
|
Integer | 5000 | Prüf-Intervall in Millisekunden |
Tracking-Optionen
| Schlüssel | Tabelle | Beschreibung |
|---|---|---|
TrackPrices
|
KHKPreislistenArtikel | Einzelpreise in Preislisten |
TrackKHKPreislisten
|
KHKPreislisten | Gültigkeitsänderung der Preisliste selbst |
TrackPriceListValidity
|
– | Täglicher Check ob Preislisten gültig/ungültig wurden |
TrackAttributes
|
oHTKAttributeEntities | Artikelattribute |
TrackKHKArtikel
|
KHKArtikel | Artikel-Stammdaten |
TrackKHKArtikelVarianten
|
KHKArtikelVarianten | Artikelvarianten |
|
|
|
|
TrackKHKArtikelStueckliste
|
KHKArtikelStueckliste | Stücklisten |
TrackHTKOmniAlternativeSKU
|
HTKOmniAlternativeSKU | Alternative SKUs |
TrackOHTKSyncData
|
oHTKSyncData | Sync-Daten (nur Trigger als Auslöser möglich) |
TrackOHTKSyncDataClient
|
oHTKSyncDataClient | Client-Sync-Daten (Medien) |
Beispiel für Preis-Tracking:
[ChangeTracking]
Enabled = 1
IntervalMs = 5000
TrackPrices = 1
TrackKHKPreislisten = 1
TrackPriceListValidity = 1
Neue Funktion betreffend CrossSelling im Bereich Upload:
[Upload]
CrossSellingOnFirstUpload=0 ; Default: kein CrossSelling beim ersten Upload
CrossSellingOnFirstUpload=1 ; NEU: CrossSelling auch beim ersten Upload laden
Vollständiges Beispiel
[DatabaseSettings]
ConnectionString = Server=SQLSERVER;Database=OLDemoReweAbfD#;Trusted_Connection=True;
ConnectionStringEncrypted = 0
[Host]
Port = 10084
[OmniSellerAPI]
BaseURL = https://api.xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Heartbeat = 0
Endpoint =
[ERP]
Type = 0
[Cache]
EnableTextCache = 0
EnableLazyLoad = 1
DailyFullRefreshHour = 3
[Upload]
DoStorageAreas = 0
DoXMLMediaAttributs = 0
[JsonLog]
RetentionDays = 3
DropRecreateOnCleanupFail = 1
[Log]
Pricelog = 0
[ChangeTracking]
Enabled = 1
IntervalMs = 5000
TrackPrices = 1
TrackKHKPreislisten = 1
TrackPriceListValidity = 1
TrackAttributes = 0
TrackKHKArtikel = 0
TrackKHKArtikelVarianten = 1
TrackKHKArtikelLagerbewegungen = 1
TrackKHKArtikelStueckliste = 0
TrackHTKOmniAlternativeSKU = 0
TrackOHTKSyncData = 0
TrackOHTKSyncDataClient = 0
[Upload]
DefaultLanguage = DE
Hinweise
- Nach Änderungen an der INI-Datei muss der Service neu gestartet werden
- Die Datei wird beim ersten Start automatisch mit Standardwerten erstellt
- Fehlende Schlüssel werden mit Standardwerten behandelt
- Bei verschlüsseltem ConnectionString: Nicht manuell bearbeiten!