2012-06-18 13 views

risposta

10

Le identità utente di Windows NT sono note come SID, a security-identifier. La rappresentazione di stringa è specificata in SID String Format Syntax e la rappresentazione di marshall è specificata in SID--Packet Representation. Se si desidera memorizzare un SID nel database, utilizzare la stessa rappresentazione del campo sys.databases.owner_sid: varbinary (85). Per recuperare un SID di accesso utilizzare SUSER_SID (che restituisce anche ... varbinary(85)).

In particolare fanno non identità deposito come nomi di accesso (o domain\user[email protected]) dal momento che questi cambiamenti modo più frequentemente di quanto ci si aspetta, specialmente nelle grandi aziende. Il mio è cambiato circa 5 volte in 10 anni.

+0

Per quanto ho capito dalle risposte, se userò l'userid per connettere l'utente con qualche processo, allora dovrei usare SID, ma se userò l'userid proprio come un'etichetta, allora è una scelta migliore andare con ID utente puro dal momento che SID rende il mio database più difficile da leggere, ho ragione? – HOY

+0

La visualizzazione del SID all'utente non è utile, ad eccezione degli amministratori. Tuttavia puoi sempre convertire un SID in un nome usando ['SUSER_SNAME (sid)'] (http://msdn.microsoft.com/en-us/library/ms174427.aspx) in T-SQL o usando ['SecurityIdentifier. Traduci (typeof (NTAccount)) '] (http://msdn.microsoft.com/en-us/library/system.security.principal.securityidentifier.translate.aspx) in C#. –

2

Questa è una domanda molto complessa.

Tecnicamente NON memorizzare il nome. memorizzare l'ID, che tra l'altro è un GUID per tipo comunque.

Ciò significa che si è al sicuro quando ad esempio si rinomina l'account ed è ciò che fa WINDOWS. Mai visto quando apri i diritti su un file ci vuole un secondo per mostrare i nomi? E mostra prima un numero? Questo perché Windows richiede un po 'per ottenere i nomi dal controller di dominio.

SEMPLICE è quello di memorizzare il nome dell'account, ma significa che sei "morto" su un rinominare, che dovrebbe essere abbastanza veloce, otoh. Penso che la maggior parte delle soluzioni vada per questo;)

+0

"ID è' GUID' per tipo comunque. " Non necessariamente. È possibile specificare 'SID' o' GUID'. Un 'GUID' sarà univoco su più domini se hai una società così grande, mentre un' SID' non è garantito essere univoco tra i domini. Ma 'SID' è retrocompatibile con Windows NT. – GibralterTop

1

Quando si ottiene l'ID utente corrente (controllare HERE), viene utilizzato char(30).

Quindi, almeno, è necessario modificare la lunghezza a 30!

1

Dipende dal tipo di dati in userid se è un ID da un'altra tabella nel database, quindi salvarlo come per il tipo di dati nella tabella del parente. se è Windows ID utente, salvalo come nvarchar ma assicurati che l'ID utente più logico sia sistemato. come nvarchar (50)

1

o dovrei addirittura negozio userids

Durante la creazione di nuovo account in Stack overflow. Accetta userids che significa che usa Passport Authentication. Tuttavia mantiene le informazioni dell'utente nel database per la relazione tra query/risposte/commenti/flag ecc.

Quale dovrebbe essere il tipo di dati?

Bene, dipende dal vostro requisito. In caso di ritardo non in inglese. Deve essere NVarchar(50)