2017-06-28 2 views
0

Der Versuch, den Benutzernamen in eine Tabelle hinzuzufügen, aber ich dbo als BenutzernamenAutomatische Benutzersignatur in SQL

CREATE TABLE username 
(
ID int, 
Date datetime default CURRENT_TIMESTAMP, 
Signatur varchar(200) default CURRENT_USER, 
Comment varchar(255), 

); 

UND DANN

INSERT INTO username 
(Comment) 
VALUES 
('Just some text'); 

SELECT * FROM username 
ORDER BY Date desc; 

result

Wenn ich CURRENT_USER ersetzen Mit SYSTEM_USER oder SUSER_SNAME() erhalte ich den Benutzernamen DESKTOP-0DM0L90 \ jokr1

H Wie bekomme ich nur jokr1 als Benutzername?

+2

Der ursprüngliche Benutzername ist, was Sie sollten wahrscheinlich verwenden werden. Der Grund dafür ist, dass es in einer anderen Domäne ein 'jokr1' geben könnte. Ihrem Rat folgend würden beide Benutzer kollidieren, obwohl sie dies eigentlich nicht tun sollten. –

+0

Oder, wahrscheinlicher, localhost \ administrator vs domain \ administrator. Ich würde den vollständigen Benutzernamen speichern und dann die Domain aufteilen, wenn Sie sie präsentieren, wenn Sie das möchten. – JeffUK

Antwort

0

Der vollständige Benutzername lautet Domäne \ Benutzer; Das ist es, was dir alle Befehle von user/suser usw. geben. Sie können die Standardmethoden für die String-Manipulation verwenden, um nur einen Teil der Zeichenfolge zu erhalten.

CREATE TABLE username 
(
ID int, 
Date datetime default CURRENT_TIMESTAMP, 
Signatur varchar(200) default right(SYSTEM_USER,len(SYSTEM_USER)-charindex('\',SYSTEM_USER)), 
Comment varchar(255), 

); 

Wenn Sie jemals die ‚Nutzer‘, die damit verbunden identifizieren wollen, würde ich empfehlen, die SID über die Speicherung:

SELECT SUSER_SID(system_user)