Mammut CMS

Anwenderhandbuch :: Anhang :: SQLServer Notizen

SQLServer Notizen

Allgemeine Datenbankeinstellungen

Es wird von folgenden Standardwerten ausgegangen:

ANSI_NULL_DEFAULT=ON
ANSI_NULLS=OFF
ANSI_PADDING=OFF
ANSI_WARNINGS=OFF
ARITHABORT=OFF
CONCAT_NULL_YIELDS_NULL=OFF
QUOTED_IDENTIFIER=OFF
NUMERIC_ROUNDABORT=OFF
RECURSIVE_TRIGGERS=OFF

Linux-Webserver

Allgemeine Einstellungen

Unter Linux muss die Erweiterung "mssql" verwendet werden, welche auf FreeTDS basiert. Diese verhält sich in einigen Fällen abweichend von der offiziellen Microsoft-Erweiterung "sqlsrv".

Die Datei "freetds.conf" sollte die folgenden Parameter (entweder global oder als Serverkonfiguration) enthalten:

tds version = 8.0
client charset = UTF-8

Folgende Werte sind für in der PHP-Konfiguration (php.ini) empfohlen:

mssql.datetimeconvert = Off
mssql.charset = "UTF-8"

Dies behebt auch die Fehlermeldung:
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.

Datum-Typ

Der Typ "Datum", eingeführt mit SQL-Server 2008, wird von der MSSQL-Erweiterung nicht unterstützt, Workarounds sind derzeit leider technisch nicht sinnvoll möglich. Daher muss bei Feldern dieses Typs eine Prüfung erfolgen, ob der Wert ein Objekt vom Typ DateTime oder ein String ist. Dieser kann in den meisten Fällen direkt einem DateTime-Konstruktor übergeben werden:

$obj = mssql_fetch_result($result);
if(is_string($obj->datecol))
  $obj->datecol = new \DateTime($obj->datecol);

Abgeschnittene Texte

Werden Texte oder Binärwerte abgeschnitten, kann dies mit den folgenden Einstellungen (php.ini) teilweise behoben werden:

mssql.textlimit = 65536
mssql.textsize = 65536

Anm.:
Werte der php.ini können ggf. auch per ini_set(SCHLÜSSEL, WERT) gesetzt bzw. überschrieben werden. Dies kann beispielsweise in den Konfigurationsdateien geschehen.