[PHP] ODBC-koppeling naar MS SQL 2000

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb in PHP een probleem bij het maken van een verbinding met een SQL-2000 server op een windows 2003 server vanaf een andere windows 2003 server met IIS 6.0. Ik probeer dit te doen via een ODBC-koppeling.

Ik heb een system-dsn aangemaakt op de webserver die verwijst naar de juiste database op de database-server. Deze verbinding heb ik met de ingebouwde test getest. Volgens deze test werkt alles prima. Vervolgens probeer ik verbinding te maken met het volgende script:

<?php
$dsn="Styling";
$username="mijn gebruikersnaam";
$password="mijn wachtwoord";

$sqlconnect = odbc_connect ($dsn, $username, $password);
?>

Dit lijkt mij toch volgens het boekje. Op mijn testomgeving thuis heb ik zonder problemen op deze manier een verbinding gemaakt tussen twee servers. Nu ik op mijn werk echter probeer de site werkend te krijgen krijg ik de volgende melding:

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied., SQL state 08001 in SQLConnect in E:\Inetpub\Voorraad\password.php on line 5

Ik heb het ook al geprobeerd op de volgende manier:

<?php
$username="mijn gebruikersnaam";
$password="mijn wachtwoord";

$sqlconnect = odbc_connect("Driver={SQL Server};Server=VB002755;Database=stylingweb", $username,$password)
?>

VB002755 is mijn lokale pc. Lokaal werkt het wel. Zodra ik echter VB002755 vervang voor de database-server krijg ik een foutmelding. Ik heb samen met onze systeembeheerder van alles geprobeerd. We verwachten dat het te maken heeft met rechten die php nodig heeft maar niet heeft.

Mijn vraag aan jullie is of jullie ons misschien een aanwijzing kunnen geven. Wellicht hebben jullie hetzelfde meegemaakt, of weten jullie wat er mis gaat. Het management wil als altijd de site zo snel mogelijk online krijgen (ik ook trouwens) en snapt niet wat we nou moeilijk doen.

Even voor de volledigheid het gaat om het volgende:

Webserver:
Windows 2003
IIS 6.0
PHP 5.0
Werkende ODBC-koppeling naar databaseserver

Database server:
Windows 2003
MS SQL 2000 SP3

We hebben echter ook al getest op een server met MS SQL 2000 SP4.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Als ik jou was zou ik een DSN less connectie gebruiken. Je bent dan niet afhankelijk van de DSN op de machine, en de performance is over het algemeen ook beter.

Op www.connectionstrings.com kun je voorbeelden vinden van DSN less conenctiestrings voor SQL Server (en andere db's)

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
P_de_B schreef op dinsdag 25 oktober 2005 @ 09:41:
Als ik jou was zou ik een DSN less connectie gebruiken. Je bent dan niet afhankelijk van de DSN op de machine, en de performance is over het algemeen ook beter.

Op www.connectionstrings.com kun je voorbeelden vinden van DSN less conenctiestrings voor SQL Server (en andere db's)
Ik ben op zich nieuw op dit gebied (werk zelf altijd met MySQL), maar is mijn tweede voorbeeld:
<?php
$username="mijn gebruikersnaam";
$password="mijn wachtwoord";

$sqlconnect = odbc_connect("Driver={SQL Server};Server=VB002755;Database=stylingweb", $username,$password)
?>

geen voorbeeld van een dsn-less connectie? Zoals gezegd werkt dit lokaal wel, maar op de server niet.

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Heeft jouw gebruiker wel toegang tot de database? En is het een Windows user, of heb je een database user aangemaakt? Probeer anders eens met de client tools van SQL Server verbinding te maken met de server, gebruikmakend van de door jou in PHP gebruikte username.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is een sql-user. In de ODBC-koppeling gebruik ik dezelfde credentials als in het script. Via deze ODBC kan ik zoals gezegd wel verbinding maken. Ik kan ook op de database komen met deze inloggegevens.

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 20:53
To make a DSN-less connection using ODBC to MS-SQL:

<?php

$connection_string = 'DRIVER={SQL Server};SERVER=<servername>;DATABASE=<databasename>';

$user = 'username';
$pass = 'password';

$connection = odbc_connect( $connection_string, $user, $pass );

?>

servername is the name of the database server

databasename is the name of the database

Note, I've only tried this from a windows box using the Microsoft ODBC drivers.
I fighted with the "Data source name not found and no
default driver specified, SQL state IM002 in SQLConnect"
error for a while trying to connect via ODBC to a SQL Server
2000. Finally I found this workaround:

$cn = odbc_connect("Driver={SQL Server};Server=MyServer;Database=MyDatabase",
"MyUser","MyPassword")

Change "MyServer", "MyDatabase", "MyUser" and "MyPassword" to the right values.

I guess that adding the "Integrated Security=YES" will work too.
Allebei copy paste van php.net, probeer het eens zou ik zeggen.

[ Voor 52% gewijzigd door sig69 op 25-10-2005 11:03 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sig69 schreef op dinsdag 25 oktober 2005 @ 11:02:
[...]


[...]

Allebei copy paste van php.net, probeer het eens zou ik zeggen.
Ik heb geloof ik alle oplossingen op php.net al wel geprobeerd. Thuis heb ik vanaf een webserver met windows 2000 verbinding gemaakt naar een windows 2003 database server met sql 2000. Dezelfde situatie als nu dus, maar op de een of andere manier werkt ie hier niet. De enige reden die ik kan bedenken zou te maken hebben met strengere toegangsrechten op een domein.

Ik probeer nu vanaf de webserver verbinding te maken met een database op een windows 2000 server in hetzelfde domein. Als dat lukt moet het dus aan windows 2003 liggen (correct me if I'm wrong). Even wachten tot de systeembeheerder terug is van zijn rookpauze dan kan het testscript op de server gezet worden. Ik houd jullie op de hoogte. In ieder geval alvast bedankt voor de reacties.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik weet niet of je met een bepaalde reden voor ODBC kiest, maar je zou het ook eens met de PHP MSSQL extensie kunnen proberen. Dat werkt prima, alleen moet je even de ntwdblib.dll van je MSSQL client installatie in je PHP dir zetten, de meegeleverde is namelijk verouderd.

Voordat ik deze DLL verving had ik trouwens dezelfde symptomen als jij, dus het zou misschien ook een verouderde-dll-issue kunnen zijn.
Pagina: 1