/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Connecte til MS SQL-server fra Linux box
Fra : Thomas S


Dato : 28-03-05 17:55

Jeg har brug for at connecte til en MS SQL-server fra en anden server
som kører php5/linux.

Har kigget på ODBC: http://dk2.php.net/manual/en/function.odbc-connect.php

men kan ikke lige gennemskue om det kræver at der er installeret ekstra
drivere/moduler for at det virker.

Er der nogen der har erfaringer med dette?

Mvh

Thomas

 
 
Morten Toft (28-03-2005)
Kommentar
Fra : Morten Toft


Dato : 28-03-05 19:04

Halløjsa,

Det kan godt lade sig gøre, men vær opmærksom på at det måske ikke lige
virker i første forsøg, men påregn et par grå hår inden det lykkes :)

1) PHP skal være kompileret med mssql support, så mssql_* funktionerne
virker
2) FreeTDS modulerne skal være installeret på din Linux box
(http://www.freetds.org)
3) FreeTDS config'en skal opsættes, vær meget opmærksom på ikke at ændre
unødige parametre til at begynede med så som max.text size el.lign.
4) Husk at mssql skal pege på FreeTDS'en når php kompileres, ellers virker
det ikke.

Dette er yderligere dokumenteret på php.net under mssql.
Med FreeTDS kan du også anvende ODBC (inkl. sybase funktioner, men mindre
relevant), mssql_* er dog at foretrække, fra et hastighedsmæssigt synspunkt.

Mvh. Morten

"Thomas S" <garvet_fjerndette@gmail.com> wrote in message
news:bFW1e.107787$Vf.4140888@news000.worldonline.dk...
> Jeg har brug for at connecte til en MS SQL-server fra en anden server
> som kører php5/linux.
>
> Har kigget på ODBC: http://dk2.php.net/manual/en/function.odbc-connect.php
>
> men kan ikke lige gennemskue om det kræver at der er installeret ekstra
> drivere/moduler for at det virker.
>
> Er der nogen der har erfaringer med dette?
>
> Mvh
>
> Thomas



Troels Arvin (28-03-2005)
Kommentar
Fra : Troels Arvin


Dato : 28-03-05 19:56

On Mon, 28 Mar 2005 18:54:30 +0200, Thomas S wrote:

> Jeg har brug for at connecte til en MS SQL-server fra en anden server som
> kører php5/linux.

Der er forskellige muligheder. Jeg har længe benyttet FreeTDS uden den
helt store begejstring. I stedet er jeg gået over til at benytte ODBTP:
http://odbtp.sourceforge.net/

Den kræver, at en service installeres på en Windows-maskine, gerne samme
maskine, hvorpå MSSQL-serveren kører. Bortset fra denne ulempe, synes
jeg, den kører godt.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Thomas S (29-03-2005)
Kommentar
Fra : Thomas S


Dato : 29-03-05 21:16

Tak for svar.

> Der er forskellige muligheder. Jeg har længe benyttet FreeTDS uden den
> helt store begejstring. I stedet er jeg gået over til at benytte ODBTP:
> http://odbtp.sourceforge.net/

Hvilke problemer var der med FreeTDS eller hvad var du utilfreds med?

I mit setup er MSSQL-serveren en backendserver hvor alle stamdata
befinder sig. Udvalgte stamdata skal overføres til frontend/webserveren
(som kører Linux / MySQL / php5) een gang i døgnet. Der skal således
ikke køres løbende queries på MSSQL-serveren fra frontend.

Mvh

Thomas

Troels Arvin (29-03-2005)
Kommentar
Fra : Troels Arvin


Dato : 29-03-05 21:38

On Tue, 29 Mar 2005 22:15:41 +0200, Thomas S wrote:

> Hvilke problemer var der med FreeTDS eller hvad var du utilfreds med?

Jeg synes, jeg stødte ind i lidt for mange "gotcha"s, altså særheder,
der godtnok er dokumenteret, når man leder efter det, men som man aldrig
ville tro var problemer. Fx. oplevede jeg underlige problemer, når jeg
benyttede tabeller med VARCHAR-felter på over 255 tegn. Og jeg oplevede
problemer med håndtering af danske tegn. Muligvis/sandsynligvis "min
skyld", idet det vistnok er dokumenteret - men ikke desto mindre sager,
der tog megen tid at prøve at få fod på. FreeTDS+PHP kan også være
kompliceret at få installeret korrekt.

Med ODBTP er har jeg haft færre af den slags situationer.

> I mit setup er MSSQL-serveren en backendserver hvor alle stamdata
> befinder sig. Udvalgte stamdata skal overføres til frontend/webserveren
> (som kører Linux / MySQL / php5) een gang i døgnet. Der skal således
> ikke køres løbende queries på MSSQL-serveren fra frontend.

Ligegyldigt hvordan du gør, skal du nok være forberedt på
datatype-forskelle mellem MSSQL og MySQL.

Mit første forsøg ville nok bestå i at benytte sqsh[1] til at dump'e
data, og så perl'e lidt på dem, for herefter at sende dem til MySQL.
Eller du kunne måske opsætte et cron-job på Windows-serveren, der
benytter MSSQL's eget dump-utility til at dump'e data; den kan vist godt
sættes til at dump'e på en måde, der gør data håndtérbare i fx. perl.

Alternativt ville jeg benytte en PHP, der har ODBTP og MySQL extensions og
ordne typekonverteringer i PHP. I sådanne situationer (PHP-scripts, der
kører i lang tid) er det ofte relevant at øge PHP's timeout-værdi[2]
betragteligt.


Referencer:
1: http://www.sqsh.org/
Kan kompilere med brug af FreeTDS. Relativt ukompliceret, som
jeg husker det. Men æøå kan godt give problemer.

2: http://dk.php.net/manual/en/function.set-time-limit.php

--
Greetings from Troels Arvin, Copenhagen, Denmark


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste