PHP und MSSQL erzeugen unterschiedliche Abfrageerbgebnisse

09/09/2011 - 16:03 von Irmgard Schwenteck | Report spam
Hallo

ich sitze hier sehr ratlos vor einem Phànomen:

Eine Abfrage direkt auf dem MS-SQL-Server erzeugt als Ergebnis 'A', was
korrekt ist.

dieselbe Abfrage von PHP an den SQL-Server geschickt, erzeugt ein
anderes Ergebnis.

Da der SQL-Server alles tut was er soll, vermute ich die Ursache bei PHP
bzw. der Kommunikation von PHP mit dem SQL-Server.
d.c.l.p.d gibts ja nicht mehr, deshalb hier.

Konkret:

$db=mssql_connect("PC\SQLEXPRESS","intranet","intranet");
mssql_select_db('Verwaltung', $db);

$windowsname = "DOMAIN\ISchwenteck";

$q = "select dbo.fn_Userlevel('".$windowsname."')";
$rs = mssql_query($q, $db);
$row = mssql_fetch_array($rs);
$role = $row[0];

fn_Userlevel ist eine benutzerdefinierte Funktion auf dem SQL-Server
Anhand der Gruppenmitgliedschaft des übergebenen Namens wird ein
entsprechender String zurückgeliefert.

Da ich Admin bin, sagt mir der SQL-Server auf
select dbo.fn_Userlevel('DOMAIN\ISchwenteck')
korrekt ein A, bei anderen Nutzernamen z.B. 'NTh'.

PHP fàllt *immer* in den Else-Zweig und sagt X

Ich verstehs nicht.

in der Hoffnung auf Erleuchtung verbleibt
Irmgard

ALTER FUNCTION [dbo].[fn_Userlevel](@windowsname varchar(100))
RETURNS varchar(3)
AS
BEGIN
DECLARE @userid smallint
DECLARE @ReturnString varchar(3)
SET @userid = user_id(@windowsname)
SET @ReturnString CASE
WHEN @userid in (select memberuid from sysmembers where groupuid =
user_id('db_owner')) THEN 'A'

WHEN @userid in (select memberuid from sysmembers where groupuid =
user_id('fibu')) THEN 'A'

WHEN @userid in (select memberuid from sysmembers where groupuid =
user_id('nord')) THEN 'NTh'

[... usw...]

ELSE 'X'
END
RETURN @ReturnString
 

Lesen sie die antworten

#1 jakob kollmann
09/09/2011 - 16:24 | Warnen spam
Hallo!

On 9/9/2011 4:03 PM, Irmgard Schwenteck wrote:
Hallo

Da ich Admin bin, sagt mir der SQL-Server auf
select dbo.fn_Userlevel('DOMAIN\ISchwenteck')
korrekt ein A, bei anderen Nutzernamen z.B. 'NTh'.



Hast du dich schon mal als der User 'intranet' am SQL-Server
angemeldet und die Query abgesetzt? Könnte ein Berechtigungs-
problem sein.

lg. jakob

Ähnliche fragen