Ciao Leute!
Ich bräuchte noch ein wenig Hilfe, da ich mich meines Erachtens schon sehr weit geschlagen habe, jedoch noch vor einem Problemchen stehe.
Ich versuche mal das ganze "vom Anfang an" zu erklären, wird vlt. etwas lang...
Also, ich habe OTRS 2.4.9 auf Debian installiert und wollte meine bestehende Kunden-Datenbank aus MSSQL einbinden. Da die Daten in der MSSQL-db nicht in einer einzigen Tabelle lagen, habe ich mir eine "View" erstellt die mir jeweils:
FIRMENNAME, NAME, NACHNAME, EMAIL, ID_KUNDE
herausgibt.
In /etc/otrs/Kernel/Config.pm hab ich folgendes eingetragen:
# CustomerUser
# (customer user database backend and settings)
$Self->{CustomerUser} = {
Name => 'Database clienti',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
# if you want to use an external database, add the
# required settings
DSN => 'DBI:Sybase:',
DSN => 'DBI:Sybase:server=sqlexpress;database=Piramide_Informatica',
User => 'sa',
Password => 'password',
Type => 'mssql',
Table => 'v_customer',
Attribute => {},
},
# customer uniq id
CustomerKey => 'ID_KUNDE',
# customer #
CustomerID => 'ID_KUNDE',
# CustomerValid => 'valid_id',
CustomerUserListFields => [ 'FIRMENNAME', 'NAME', 'NACHNAME', 'EMAIL' ],
# CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'],
CustomerUserSearchFields => [ 'FIRMENNAME', 'NAME', 'NACHNAME', 'EMAIL'],
CustomerUserSearchPrefix => '*',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['EMAIL'],
CustomerUserNameFields => [ 'NAME', 'NACHNAME' ],
CustomerUserEmailUniqCheck => 1,
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
# [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
[ 'UserFirstname', 'Firstname', 'NAME', 1, 1, 'var', '', 0 ],
[ 'UserLastname', 'Lastname', 'NACHNAME', 1, 1, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'EMAIL', 1, 1, 'var', '', 0 ],
# [ 'UserEmail', 'Email', 'email', 1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
[ 'UserCustomerID', 'CustomerID', 'ID_KUNDE', 0, 1, 'var', '', 0 ],
# [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
# [ 'UserPhone', 'Phone', 'phone', 1, 0, 'var', '', 0 ],
# [ 'UserFax', 'Fax', 'fax', 1, 0, 'var', '', 0 ],
# [ 'UserMobile', 'Mobile', 'mobile', 1, 0, 'var', '', 0 ],
# [ 'UserStreet', 'Street', 'street', 1, 0, 'var', '', 0 ],
# [ 'UserZip', 'Zip', 'zip', 1, 0, 'var', '', 0 ],
# [ 'UserCity', 'City', 'city', 1, 0, 'var', '', 0 ],
# [ 'UserCountry', 'Country', 'country', 1, 0, 'var', '', 0 ],
# [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
# [ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int', '', 0 ],
],
};
--------
Was ich dabei erhalte, wenn ich in der OTRS-GUI auf "Kunden" gehe und darin eine Suche starte, ergibt *schon* ein Resultat (d.h. die db-Verbindung mittels ODBC funktioniert), jedoch sind die resultierenden Zeilen einfach LEER!!! Ich hab's mit unterschiedlichen Kunden versucht: ich erhalte korrekterweise EINE ZEILE PRO KUNDE, nur ist diese komplett weiss/leer.
Wo kann das Problem liegen?
PS: ich vergass noch das hier aus dem /var/log/apache2/error.log...
[Fri Nov 26 00:02:18 2010] -e: DBD::Sybase::st fetchrow_array failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
[Fri Nov 26 00:02:18 2010] -e: Message String: Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?')
[Fri Nov 26 00:02:18 2010] -e: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
[Fri Nov 26 00:02:18 2010] -e: Message String: Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?')
[Fri Nov 26 00:02:18 2010] -e: DBD::Sybase::st fetchrow_array failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
[Fri Nov 26 00:02:18 2010] -e: Message String: Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?')
[Fri Nov 26 00:02:18 2010] -e: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
[Fri Nov 26 00:02:18 2010] -e: Message String: Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?')
Ein weiterer Schritt, nach etwas googeln:
root@ticket:/tmp# tsql -S sqlexpress -U sa
locale is "it_CH.UTF-8"
locale charset is "UTF-8"
Password:
1> exec sp_helpsort;
2> go
Server default collation
Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive
(1 row affected)
(return status = 0)
Hab hiermit festgestellt welches Charset die db hat (Latin1-General) und welche nun mein Linux-Server (UTF-8). Wie soll ich nun vorgehen, da ich glaube es liegt an der Konversion zwischen den beiden Charsets?
Dankesehr!
F.
Kundenstamm aus MSSQL per FreeTDS: fast geschafft!
Re: Kundenstamm aus MSSQL per FreeTDS: fast geschafft!
Hallo?!
Keiner der je eine MSSQL-Datenbank an ein OTRS-System eingebunden hat???
F.
Keiner der je eine MSSQL-Datenbank an ein OTRS-System eingebunden hat???

F.