MS SQL-Datenbank aufsetzen

Hier sind die erforderlichen Konfigurationen für die Verwendung einer MS SQL-Datenbank mit Logo beschrieben.

 

 

Die Anbindung der Datenbank an Logo wird in der INI-Datei konfiguriert, diese liegt im Logo-Stammverzeichnis. Rollen und Benutzer werden auf der Datenbank selbst angelegt.

Konfigurationsdatei

Die Konfigurationsdatei muss minimal folgende Angaben enthalten:

[Database] DatabaseType= Server= Database= Username= Password=

Beispiel einer Konfigurationsdatei für eine MS SQL-Verbindung:

[Database] DatabaseType=MSSQL Server=BSMSSQL01 Database=testdatenbank Port=1433 Username=logouser Password=logouser AdminUsername=logoadmin AdminPassword=logoadmin UseWindowsLogin=False NativeClient=False UseOLEDB=False UseBuiltInSequences=False LockTimeout=60000

 

Instanz

Falls es sich um eine Standard-Instanz handelt, sieht der Servereintrag folgendermassen aus:

Server=Servername

Falls es sich um eine benannte Instanz handelt, sieht der Servereintrag folgendermassen aus:

Wird eine benannte Instanz verwendet, muss der Native Client zwingend installiert und aktiviert werden, da sonst gewisse Funktionen (Backup, Reorganisation) nicht funktionieren.

Port

Wird nicht der Standard-Port 1433 verwendet, kann der Port entsprechend angegeben werden:

SQL-Login / Windows-Login

Standardmässig werden SQL-Logins verwendet, d. h. die Benutzer werden auf dem SQL-Server definiert. Sollen stattdessen die normalen Windows-Logins für den Zugriff auf die Datenbank verwendet werden, muss folgender Eintrag gemacht werden:

SQL Native Client

Standardmässig wird automatisch nach einem geeigneten Provider gesucht:

  • Wenn ein Native Client installiert ist, wird dieser verwendet.

  • Wenn kein Native Client installiert ist, wird OLE DB verwendet.

  • Mit NativeClient=True kann die Verwendung des Native Client erzwungen werden. Ist kein Native Client vorhanden, kann mit dieser Einstellung die Applikation nicht gestartet werden.

  • Mit UseOLEDB=True kann die Verwendung von OLE DB erzwungen werden. Auch wenn ein Native Client vorhanden ist, wird bei dieser Einstellung OLE DB verwendet.

Die Kombination von NativeClient=True und UseOLEDB=True ist widersprüchlich und somit nicht sinnvoll.

UseBuiltInSequences

Mit UseBuiltInSequences=True werden fortlaufende IDs intern vergeben und nicht über einen externen UID-Generator (wird ab SQL Server 2012 unterstützt).

LockTimeout

Bestimmt die Anzahl Millisekunden, die eine Transaktion auf eine Sperre wartet:

  • Für Logo ist standardmässig 60000 Millisekunden eingestellt (Standardwert UniDAC = 2000).

  • Kann beim Auftreten des Fehlers Lock request time out period exceeded weiterhelfen.

Aufsetzen einer neuen Datenbank

Benutzer

  • Standardmässig sollte für Logo ein Benutzer mit der Rolle db_owner erstellt werden. Falls dies nicht möglich ist, können die Rollen auf die Benutzer Admin (db_owner) und User (db_datareader, db_datawriter) aufgeteilt werden.

Wenn immer möglich sollte auf diese Aufteilung verzichtet und ein Benutzer erstellt werden.

 

  • Sollen nicht die auf dem Datenbankserver erstellten SQL-Logins, sondern die normalen Windows-Logins der Benutzer verwendet werden, müssen die entsprechenden Rollen für die verwendeten Windows-Logins auf der Datenbank definiert werden.

Einstellungen

Unter Optionen als Wiederherstellungsmodell, wenn möglich, das Modell Einfach wählen. Das standardmässig eingestellte Modell Vollständig generiert u. U. riesige Transaktionsprotokolle und hat schon mehrmals zu Problemen mit dem vorhandenen Speicherplatz geführt.

Datenbankserver-Einstellungen

Da beim Ausführen von SQL-Befehlen die Anzahl der betroffenen Records erwartet wird, darf folgendes Kontrollfeld NICHT gesetzt sein:


Bekannte Probleme

Datenbank-User nach einem Restore

Nach einem Restore einer Datenbank, welche an einem anderen Ort aufgesetzt wurde, können Probleme mit den Datenbank-Usern auftreten. Der User ist bereits in der DB vorhanden und das entsprechende Login kann nicht zugeordnet werden. In dem Falle kann der folgende Befehl für alle benötigten User ausgeführt werden: