Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi USERNAME für LOG Datei Übergeben SQL 2000 (https://www.delphipraxis.net/48918-username-fuer-log-datei-uebergeben-sql-2000-a.html)

testoli 2. Jul 2005 14:09

Datenbank: SQL2000 • Zugriff über: ADO

USERNAME für LOG Datei Übergeben SQL 2000
 
Hallo,

ich habe habe auf dem SQL2000 Server eine Rolle und einen dazu gehörigen User eingetragen.
Ich möchte nun, dass der User sich an der Datenbank mit seinem Usernamen und Passwort einlogged.
Wenn dieser User nun einen Insert über einen Delphi-Event macht, soll in der Row der Username eingetragen werden.

Hier meiner SP:
Delphi-Quellcode:
CREATE PROCEDURE [SP_NEW_ADRESSTYP]
   (   
      @ID            INT         =NULL,
      @ADRT_WERT      VARCHAR(30)      =NULL,
      @RETURN_MESSAGE      VARCHAR(150)      OUTPUT,
      @RETURN_ID         INT         OUTPUT

   )


AS
SET NOCOUNT ON
BEGIN TRANSACTION
   BEGIN
      IF @ID = 0
         BEGIN
            INSERT INTO cs_AdressTyp
            ( 
            [ADRT_WERT],
            [CREATED],
            [MODIFIED],
            [AKTIONUSER]
            )
            VALUES
            (
            LTRIM(RTRIM(@ADRT_WERT)),
            (getdate()),
            (getdate()),
            user
            )
         END
      ELSE
         BEGIN
            UPDATE cs_AdressTyp
            SET
            [ADRT_WERT]       = LTRIM(RTRIM(@ADRT_WERT)),
            [MODIFIED]       = (getdate()),
            [AKTIONUSER]       = user
            WHERE
            [ADRT_ID]      = @ID

         END
END

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                  IF @@error <> 0
                     BEGIN
                        EXEC SP_GET_MESSAGE '101','D', @RETURN_MESSAGE OUTPUT
                        ROLLBACK TRANSACTION
                        RETURN
                     END
                  ELSE
                     BEGIN
                        EXEC SP_GET_MESSAGE '100','D',@RETURN_MESSAGE OUTPUT
                        SET @RETURN_ID = @@identity
                        COMMIT TRANSACTION
                        RETURN
                     END
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SET NOCOUNT OFF
GO
Leider wird immer nur der DBO User eingetragen. Wie kann ich eine eine Anmeldung der User mit Name/PW ermöglichen und auf der Datenbank bei einer SP diesen Usernamen benutzen?

LG
Oliver

jensw_2000 4. Jul 2005 21:41

Re: USERNAME für LOG Datei Übergeben SQL 2000
 
Wenn du dich mit SQL-Server Authentification anstatt mit Windows Auth. anmeldest verwendest du in jedem Fall den SQL-Benutzer.

Aktuelle Infos über die aktive Session findest du in der Master DB

SQL-Code:
SELECT nt_username
      , loginame
FROM master.dbo.sysprocesses
WHERE spid = @@SPID

Du kannst dir auch flink eine Funktion bauern, die dir den gewünschten Usernamen als Rückgabewert liefert...

SQL-Code:
CREATE FUNCTION SYSF_GetNtUser()
RETURNS Varchar(128)
AS
BEGIN
  DECLARE @RET VARCHAR(128)
  SELECT @RET = nt_username
  FROM master.dbo.sysprocesses
  WHERE spid = @@SPID
 
  IF @RET IS NULL
    RETURN '<unbekannter Benutzer>'
   
  RETURN @RET
 
END
bzw.

SQL-Code:
CREATE FUNCTION SYSF_GetDbUser()
RETURNS Varchar(128)
AS
BEGIN
  DECLARE @RET VARCHAR(128)
  SELECT @RET = loginame
  FROM master.dbo.sysprocesses
  WHERE spid = @@SPID
 
  IF @RET IS NULL
    RETURN '<unbekannter Benutzer>'
   
  RETURN @RET
 
END


Schöne Grüße,
Jens

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz