PHP: Custom Session Handler Unserialize funktioniert nicht unter Windows

Die Entwicklungsumgebung meiner Anwendung ist Zend Framework 1.11, MSSQL server 2012, SQLSRV-Erweiterung für database-Konnektivität mit PDO, Windows 7, IIS 7. Session wird in der database gespeichert, indem benutzerdefinierte Session-Handler-class verwendet wird.

Das Problem ist, dass, wenn ich $ _SESSION nach session_start (), die in Bootstrap.php-file geschrieben ist, drucken, zeigt es nicht komplette unsialisierte Array von sessionsdaten. Es scheint, dass Session-data, die von "read" -Methode der Session Class Handler zurückgegeben wird, nicht aus irgendeinem Grund unsialisiert. Hier ist mein Quellcode: –

Bootstrap.php

protected function _initSession() { $handler = new Mcd_Core_SessionHandler_Database(); session_set_save_handler( array($handler, 'open'), array($handler, 'close'), array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc') ); session_start(); echo "<pre>"; print_r($_SESSION); } 

SessionHandler class

 <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } <? php <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } } <?php class My_Core_SessionHandler_Database { protected $dbh; protected $ipAddress = ''; public function __construct() { $this->dbh = My_Core_Config::get_dbinstance(); } public function open($savePath, $sessionId) { return true; } public function close() { return true; } public function read($sessionId) { $query = "SELECT TOP 1 CAST(session as varchar(max)) as session FROM t_php_session WHERE php_session_id = '".$sessionId."' AND DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) >= GETDATE() AND user_ip = '".$this->ipAddress."'"; $stmt = $this->dbh->prepare($query); $stmt->execute(); $result = $stmt->fetchColumn(); if ($result === false) { return ''; } return $result; } public function write($sessionId, $sessionData) { $query = " SELECT id FROM t_php_session WHERE php_session_id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); $result = $stmt->fetchColumn(); if (empty($result)) { $query = "INSERT INTO t_php_session (php_session_id, session, user_ip, created) VALUES (?, CONVERT(VARBINARY(max), ?), ".$this->ipAddress.", GETDATE())"; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId, $sessionData)); } else { $query = " UPDATE t_php_session SET session = CONVERT(VARBINARY(max), ?), user_ip = ".$this->ipAddress.", created = GETDATE() WHERE id = ? "; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionData, $result)); } return true; } public function destroy($sessionId) { $query = 'DELETE FROM t_php_session WHERE php_session_id = ?'; $stmt = $this->dbh->prepare($query); $stmt->execute(array($sessionId)); return true; } public function gc($maxlifetime) { $query = " DELETE FROM t_php_session WHERE DATEADD(minute, ".My_Core_Config::get_value('session_timeout_period').", created) < GETDATE()"; $stmt = $this->dbh->prepare($query); $stmt->execute(); return true; } } 

Der datatyp des Session-Feldes in der databasetabelle ist varbinary (max). Ich denke, das könnte das Problem sein, aber nicht sicher.

Ausgabe der gelesenen Methode der Session-Handler-class ist:

 My_Core_Session|a:1:{s:16:"My_Core_Session";a:4:{s:19:"previous_controller";N;s:15:"previous_action";N;s:18:"current_controller";s:16:"authentification";s:14:"current_action";s:5:"login";}} 

Ausgabe von $ _SESSION in Bootstrap.php ist:

 Array ( [My_Core_Session] => ) Array Array ( [My_Core_Session] => ) 

Wo soll die Ausgabe sein:

 Array ( [My_Core_Session] => Array ( [My_Core_Session] => Array ( [previous_controller] => [previous_action] => [current_controller] => authentification [current_action] => login ) ) ) Array Array ( [My_Core_Session] => Array ( [My_Core_Session] => Array ( [previous_controller] => [previous_action] => [current_controller] => authentification [current_action] => login ) ) ) 

Diese Anwendung funktioniert gut auf Linux als gleiche database, Quellcode wird verwendet, aber mit verschiedenen Umgebungen wie Apache 2.2, FreeTDS, Dblib. Wir haben diese Anwendung gerade von Linux auf Windows verschoben und diesem Problem zugewandt.

Ich fand die Lösung und möchte es mit den Leuten teilen, die das gleiche Problem haben können. Das Problem war, dass PHP-Engine war nicht in der Lage, die Session-data zu deserialize die von MSSQL server-database geholt werden könnte einige Müll kam zusammen mit den data. Der datatyp des Feldes (bei dem die session gespeichert wurde) war varbinary (max) . Ich habe es einfach zu varchar (max) zu sehen, ob es funktioniert und es funktionierte 🙂

Dies ist ein spezieller Anwendungsfall, bei dem der benutzerdefinierte Session-Handler im Zend-Framework mit der MSSQL server-database verwendet wurde. Zum Glück ist es jetzt getriggers 🙂

Viel Glück !!