SPG 4 Mehrbenutzerinstallation Probleme mit ConnectionString

Mehr
12 Jul 2025 16:38 #8196 von PeterM
Hallo zusammen,

ich habe gemäß der Installationsanleitung eine Mehrbenutzerinstallation vorgenommen:
- "Server" (Windows 10) mit SQL Server Express 2021 + SPG 4 => läuft ohne Probleme
- "Client" (Windows 11) Clientinstallation SPG 4 => Programm startet nicht
Fehlermeldung: "Es konnte keine Verbindung zum Datenbankserver hergestellt werden [...]" (siehe Anhang).
- Testen der Verbindung vom Client mittels udl-Datei ohne Probleme.
- DEMO Installation (aktuell noch)

Im Client wurden die Zugriff auf das Programm und Datenverzeichnis des Server per UNC Pfad eingetragen (einmal direkt zur .exe und einmal nur das Verzeichnis). Zurgiff via Explorer klappt auch ohne Probleme.

SPG Error Log:
[code]2025-07-12 16:16:50,311;1;ERROR;bmpToolbox.ConnectionHandling;Main validateConnectionServer;validateConnectionServer;validateConnectionServer;REDACTED\REDACTED
System.Data.SqlClient.SqlException (0x80131904): Verbindungstimeout abgelaufen. Das Timeout ist aufgetreten, während die Bestätigung des Handshakes vor der Anmeldung verarbeitet wurde. Möglicherweise ist ein Fehler beim Handshake vor der Anmeldung aufgetreten, oder der Server hat nicht rechtzeitig geantwortet.  Folgende Verbindungszeiten wurden bei dem Versuch benötigt, eine Verbindung mit diesem Server herzustellen: [Vor Anmeldung] Initialisierung=21287; Handshake=14358;  ---> System.ComponentModel.Win32Exception (0x80004005): Der Wartevorgang wurde abgebrochen
   bei System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
   bei System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   bei System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
   bei System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   bei System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   bei System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   bei System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   bei System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   bei System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   bei System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   bei System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   bei System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   bei System.Data.SqlClient.SqlConnection.Open()
   bei bmpToolbox.ConnectionHandling.validateConnectionServer(String connString)
ClientConnectionId:31a1a819-b308-401c-aacd-4c5105d1aceb
Fehlernummer (Error Number):-2,Status (State):0,Klasse (Class):11
[/code]

Da die .exe ja auf dem Client startet, muss das Programmverzeichnis ja stimmen und der Zugriff in Ordnung sein. Da der ConnectionString aus der db.ini ausgelesen wird auch dieser Zugriff. Änderungen am ConnectionString werden in der Fehlermeldung (Bild) wiedergespiegelt, jedoch bleibt der Catalog immer bei *master*!. Deaktivieren der Windows Firewall am Server brachte nichts.

Hat hier jemand eine Idee oder eine lauffähige Mehrbenutzerinstallation? Wenn ja, welche Konfiguration (SQL Server und ggf. SPG Version)?

Viele Grüße
Peter
 
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
14 Jul 2025 14:07 - 14 Jul 2025 14:09 #8197 von Boeker
Ev. liegen die MDF und LDF auf einem freigegebenen \\Ordner\, an dem der MS SQL-Dienst kein Recht hat. Der UDL-Test geht meines Wissens mit den Rechten des Users an den Ordner.
Ggfs. in der DB.INI
Internetmodus=1
setzen, damit sagt man dem MSSQL-Server, er darf die MDF und LDF in seinem Standardordner für Datenbankdateien verwalten.
Letzte Änderung: 14 Jul 2025 14:09 von Boeker.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
19 Jul 2025 10:03 #8202 von PeterM
Leider hat das auch keinen Erfolg gebracht.

Ohne Internetmodus (=0) liegen die DB Files in `C:\ProgramData\SPG-Daten\mandanten`

Mit Internetmodus (=1) und nach Neuanlage des Mandanten liegen die DB Files in 'C:\Program Files\Microsoft SQL Server\MSSQL16.SPGVEREIN\MSSQL\DATA'

Ein Wechsel wieder zum Benutzer 'sa' für die Anmeldung brachte auch keinen Erfolg.

Im SQL Server Profiler sieht man wenn man SPG auf dem Client startet ein erfolgreiches `Audit Login` und nach Wegklicken der Fehlermeldung `Audit Logout`.

Startet man SPG von Server aus kommen auch die jeweiligen Audit Login/Logout Meldungen, jedoch mit weiteren SQL Statements dazwischen. Aus irgendeinem Grund scheint das Login zu klappen aber die Statement nie am SQL Server vom Client aus anzukommen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
21 Jul 2025 11:07 #8204 von Boeker
Kann man auf dem Client auch mal das Management-Studio installieren und dann versuchen damit auf den MSSQL-Server zuzugreifen?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
21 Jul 2025 16:31 #8205 von PeterM
Wir kommen der Sache näher. SSMS installiert und gemerkt, dass Verbindungsaufbau und Navigation im SSMS (DB etc.) sehr sehr langsam ist (trotz 1 Gbit/s Anbindung).

```Connection Timeout=60``` im Connection String gesetzt und siehe da Verbindung klappt (default 15sec).

Bestand wird aber keiner angezeigt, Anlage von neuem Bestand führt zu der Fehlermeldung im Anhang (deshalb wird wohl auch kein Bestand angezeigt). Ich werde bei Zeiten die Tage nochmal die Berechtigungen prüfen (Internetmodus + Netzwerkfreigabe). Irgendwo scheint ein falscher oder nicht der richtige Nutzer für den Zugriff auf die DB genutzt zu werden. Weiß hier jemand, ob SPG den angemeldeten Nutzer für den Zugriff nutzt oder den hinterlegten (Netzwerklaufwerk mit anderem Nutzer)?
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
25 Jul 2025 16:41 #8206 von PeterM
Es läuft jetzt:
Ursache war wohl folgendes:

Zugriff per DNS langsam => umgestellt auf IP dazu:
1. Installationsanleitung Seite 8: IP Zugriff im SQL Server Konfigurationsmanager (gelb umrahmt) aktiviert für die IPv4 (siehe Anhang)
2. SQL Server Dienst sowie Browser Dienst neu gestartet
3. DB.ini wie folgt angepasst:
SQLDatenbank=Data Source=192.168.***.***\SPGVEREIN,1433;Initial Catalog=spg_verein_TST;User ID=SPG-Anwender;Password=REDACTED;Connect Timeout=60
sowie
Internetmodus=1

Bestand dann von einem Client neu aus angelegt.
 
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.394 Sekunden