PHP 5 & MSSQL Enterprise Server

PHP 5 & MSSQL Enterprise Server

am 21.06.2007 10:30:03 von lumo2000

Hallo,
habe das oftmals schon disktutierte Problem mit php&mssql

folgendes Setup liegt bei mir vor
PHP Version 5.2.2 (incl apache 2 auf localhost (WindowsXP SP2) - zum
testen)
MSSQL Enterprise Server (so weit ich weiss der 2000 - auf einem
dedicated Server in der selben Domain "server2" aka "10.100.1.12")
ich habe schon (wie auf php.net beschrieben) die korrekte
"ntwdblib.dll" in den php Ordner kopiert, sodass ich zumindest zum
Server verbinden kann.
habe auch in der PHP.ini secure connection disabled

; Use NT authentication when connecting to the server
mssql.secure_connection =3D Off


bekomme jetzt jedoch die Fehlermeldung:


Warning: mssql_connect() [function.mssql-connect]: message: Fehler bei
der Anmeldung für den Benutzer 'BOffSingleUser'. Ursache: Keiner
vertrauten SQL Server-Verbindung zugeordnet. (severity 14) in



$DBSERVER =3D 'server2'; # wurde auch mit der ip versucht
$DBUSER =3D 'login';
$DBPASS =3D 'password';
$DB =3D 'mydatabase';

#$cn =3D mssql_pconnect($DBSERVER);
$cn =3D mssql_connect($DBSERVER, $DBUSER, $DBPASS);

if(mssql_select_db($DB, $cn)) echo 'Selected DB: '.$DB."
\n";
$query =3D "Select * from myfields;";
$sql_statement =3D mssql_query($query, $cn) or die('Query failed: '.
$query);;
#$result=3Dmssql_execute($sql_statement);

while ($row =3D mssql_fetch_assoc($result))
print_r($row);

mssql_execute($sp);
mssql_close($cn);


any ideas?
Vielen Dank im Voraus
Moser Ludwig

Re: PHP 5 & MSSQL Enterprise Server

am 21.06.2007 13:02:57 von Richard Baier

lumo2000@gmail.com wrote:

> habe das oftmals schon disktutierte Problem mit php&mssql
>
> folgendes Setup liegt bei mir vor
> PHP Version 5.2.2 (incl apache 2 auf localhost (WindowsXP SP2) - zum
> testen)
> MSSQL Enterprise Server (so weit ich weiss der 2000 - auf einem
> dedicated Server in der selben Domain "server2" aka "10.100.1.12")
> ich habe schon (wie auf php.net beschrieben) die korrekte
> "ntwdblib.dll" in den php Ordner kopiert, sodass ich zumindest zum
> Server verbinden kann.
> habe auch in der PHP.ini secure connection disabled
>
> ; Use NT authentication when connecting to the server
> mssql.secure_connection = Off
>


Soweit passt es.

> bekomme jetzt jedoch die Fehlermeldung:
>
>
> Warning: mssql_connect() [function.mssql-connect]: message: Fehler bei
> der Anmeldung für den Benutzer 'BOffSingleUser'. Ursache: Keiner
> vertrauten SQL Server-Verbindung zugeordnet. (severity 14) in
>


Ist am SQL Server die gemische Authentifizierung (Windows + SQL Server)
aktiviert? Die Fehlermeldung deutet daraufhin, dass dies nicht der Fall
ist. Der SQL Server erlaubt dann nur die Verbindung über ein
berechtigtes Windows-Konto. Für den Connect über die mssql Extension
benötigt man aber die Authentifizierung über ein SQL Server Benutzerkonto.

Gruß Richard

Re: PHP 5 & MSSQL Enterprise Server

am 22.06.2007 08:01:19 von lumo2000

> Ist am SQL Server die gemische Authentifizierung (Windows + SQL Server)
> aktiviert? Die Fehlermeldung deutet daraufhin, dass dies nicht der Fall
> ist. Der SQL Server erlaubt dann nur die Verbindung über ein
> berechtigtes Windows-Konto. Für den Connect über die mssql Extension
> benötigt man aber die Authentifizierung über ein SQL Server Benutzerk=
onto.

achja, hab vergessen zu schreiben, dass
am SQL Server sowohl Windows Autenthicate als auch "normaler" Login
eingeschaltet sind.
es besteht ein User, mit den angegebenen Logindaten. (der Fehler
kommt, wenn ich die Logindaten verwende)
wenn ich micht mit meinem Windows Account einlogge (also ohne Pwd und
Login anzugeben)
(Domain\Usename) dann bekomme ich die Fehlermeldung, dass er den User
(Domain\Username$) nicht anmelden kann (bug?)
mit anderen Worten, ich habe sowohl Windows Login, als auch SQL Server
Login/Passwort Methode versucht und keine von beiden hat funktioniert.

Re: PHP 5 & MSSQL Enterprise Server

am 22.06.2007 17:37:53 von Irmgard Schwenteck

Hallo

lumo2000@gmail.com schrieb:

> es besteht ein User, mit den angegebenen Logindaten. (der Fehler
> kommt, wenn ich die Logindaten verwende)

ist bei dem auch schon die richtige Datenbank als Standard-DB eingetragen?

Gruß
Irmgard

Re: PHP 5 & MSSQL Enterprise Server

am 25.06.2007 07:41:57 von lumo2000

> ist bei dem auch schon die richtige Datenbank als Standard-DB eingetragen?
uhm, das weiss ich nicht, aber ich mach nach dem login ja nen select
database...
if(mssql_select_db($DB, $cn)) echo 'Selected DB: '.$DB."
\n";
also sollts ja egal sein -> liegt das problem ja schon beim login,
nicht erst beim auswählen der db.
oder bin ich da falsch?

Re: PHP 5 & MSSQL Enterprise Server

am 26.06.2007 17:11:18 von Irmgard Schwenteck

Hallo

lumo2000@gmail.com schrieb:
>> ist bei dem auch schon die richtige Datenbank als Standard-DB eingetragen?
> uhm, das weiss ich nicht, aber ich mach nach dem login ja nen select
> database...

Schau doch nach oder laß nachschauen.

> if(mssql_select_db($DB, $cn)) echo 'Selected DB: '.$DB."
\n";
> also sollts ja egal sein -> liegt das problem ja schon beim login,
> nicht erst beim auswählen der db.
> oder bin ich da falsch?

Du wählst keine Datenbank aus.
Du baust eine Verbindung mit diesen Zugangsdaten auf und übergibst den
Datenbanknamen.
Wenn der Benutzer nicht beim login in genau diese Datenbank fällt bzw.
keine Berechtigungen in dieser DB hat, klappt es nicht (zumindest beim
SQL-Server 2000)
Deshalb dort die richtige Standard-Datenbank eintragen.

Gruß
Irmgard

Re: PHP 5 & MSSQL Enterprise Server

am 28.06.2007 12:26:44 von lumo2000

> Deshalb dort die richtige Standard-Datenbank eintragen.

der user hat am datenbankserver einen login.
und auch in der datenbank, an die er sich anloggen soll, ist er als
benutzer eingetragen.
wo dieser "standard-Datenbank" eintrag sein soll, ist mir allerdings
ein rätsel. konnte den punkt nicht finden...
kann es sein, dass es diesen punkt in der version 2000 noch nicht
gibt?
(bei mysql gibt es ihn, das weiss ich...)

Re: PHP 5 & MSSQL Enterprise Server

am 28.06.2007 12:54:45 von Richard Baier

lumo2000@gmail.com wrote:

>> Deshalb dort die richtige Standard-Datenbank eintragen.
>
> der user hat am datenbankserver einen login.
> und auch in der datenbank, an die er sich anloggen soll, ist er als
> benutzer eingetragen.
> wo dieser "standard-Datenbank" eintrag sein soll, ist mir allerdings
> ein rätsel. konnte den punkt nicht finden...
> kann es sein, dass es diesen punkt in der version 2000 noch nicht
> gibt?

Doch den gibts. Bei einer englischen Version kommt man über den
Enterprise Manager so ans Ziel:

DB Server \ Security \ Logins \ Properties des entsprechenden Logins

Am ersten Reiter (Generals) kann man die Defaultwerte für Sprache und
Datenbank des Logins festlegen.

Falls eine deutsche Version vorhanden ist, einfach die jeweiligen
Übersetzungen verwenden (Sicherheit, ...)

Gruß Richard

Re: PHP 5 & MSSQL Enterprise Server

am 02.07.2007 10:29:42 von lumo2000

> DB Server \ Security \ Logins \ Properties des entsprechenden Logins
hab jetzt nachgeschaut, da steht schon die richtige datenbank drin...

Re: PHP 5 & MSSQL Enterprise Server

am 02.07.2007 10:30:41 von lumo2000

> DB Server \ Security \ Logins \ Properties des entsprechenden Logins
hab jetzt nachgeschaut, da steht schon die richtige datenbank drin...

Re: PHP 5 & MSSQL Enterprise Server

am 02.07.2007 16:44:56 von Irmgard Schwenteck

Hallo

lumo2000@gmail.com schrieb:
>> DB Server \ Security \ Logins \ Properties des entsprechenden Logins
> hab jetzt nachgeschaut, da steht schon die richtige datenbank drin...

Nun gut
die richtige php.ini wird aber gelesen?
muß evtl. ins Windows-Verzeichnis

zu Deinem code:
> $DBSERVER = 'server2'; # wurde auch mit der ip versucht
> $DBUSER = 'login';
> $DBPASS = 'password';
> $DB = 'mydatabase';
>
> #$cn = mssql_pconnect($DBSERVER);
> $cn = mssql_connect($DBSERVER, $DBUSER, $DBPASS);
>
> if(mssql_select_db($DB, $cn)) echo 'Selected DB: '.$DB."
\n";
> $query = "Select * from myfields;";

Hier ist ein Semikolon, was nicht reingehört

> $sql_statement = mssql_query($query, $cn) or die('Query failed: '.
> $query);;
> #$result=mssql_execute($sql_statement);

hier muß mssql_query hin.
>
> while ($row = mssql_fetch_assoc($result))
> print_r($row);
>
> mssql_execute($sp);
> mssql_close($cn);


$db=mssql_connect($DBSERVER, $DBUSER, $DBPASS);
$query = "select * from tbl";
$rs = mssql_query($query, $db);
while ($row = mssql_fetch_array($rs)) {
...mach was
}

Gruß
Irmgard

Re: PHP 5 & MSSQL Enterprise Server

am 04.07.2007 08:13:16 von lumo2000

> Nun gut
> die richtige php.ini wird aber gelesen?
> muß evtl. ins Windows-Verzeichnis
da muss ich wiedersprechen, wenn man die installation richtig
konfiguriert, gehts auch ohne files ins windows verzeichnis kopieren.

>> $query =3D "Select * from myfields;";
>Hier ist ein Semikolon, was nicht reingehört
wo?
ein SQL befehl sollte stets mit einem semikolon abgeschlossen werden.

>> $sql_statement =3D mssql_query($query, $cn) or die('Query failed: '.
>> $query);
>> #$result=3Dmssql_execute($sql_statement);
> hier muß mssql_query hin.

?? das execute ist auskommentiert, und ein mssql_query ist in der
zeile drüber zu finden...
ok, $sql_statement sollte eigentlich $result heissen... stimmt, das
ist falsch.

Re: PHP 5 & MSSQL Enterprise Server

am 04.07.2007 14:38:32 von Irmgard Schwenteck

Hallo

lumo2000@gmail.com schrieb:

>> die richtige php.ini wird aber gelesen?
>> muß evtl. ins Windows-Verzeichnis
> da muss ich wiedersprechen, wenn man die installation richtig
> konfiguriert, gehts auch ohne files ins windows verzeichnis kopieren.

schon klar, aber trotzdem mal mit phpinfo() gecheckt?

>>> $query = "Select * from myfields;";
>> Hier ist ein Semikolon, was nicht reingehört
> wo?
> ein SQL befehl sollte stets mit einem semikolon abgeschlossen werden.

Aber nicht beim MS-SQL Server.


Kannst Du Dich mit den Zugangsdaten denn direkt am Server anmelden?

Dann würd ich auf dem Rechner, wo das PHP läuft, mal die Client-tools
vom SQL-Server installieren, um den Netzwerkzugriff zu testen.

Vielleicht reicht auch osql alleine, dazu müßtest Du mal in der
SQL-Newsgroup fragen.

Gruß
Irmgard