2012-06-18 12 views

Respuesta

10

Las identidades de usuario de Windows NT se conocen como SID, a security-identifier. Su representación de cadena se especifica en SID String Format Syntax y la representación de mariscal se especifica en SID--Packet Representation. Si desea almacenar un SID en la base de datos, use la misma representación que el campo sys.databases.owner_sid: varbinary (85). Para recuperar un SID de inicio de sesión use SUSER_SID (que también devuelve ... varbinary(85)).

ver específicamente no identidades tienda como nombres de usuario (o domain\user[email protected]) ya que estos cambios manera más frecuencia de lo esperado, especialmente en las grandes corporaciones. El mío cambió unas 5 veces en 10 años.

+0

Por lo que entiendo por las respuestas, si voy a utilizar el ID de usuario para conectar al usuario con algún proceso, entonces debería usar SID, pero si voy a usar el ID de usuario como una etiqueta, entonces es una mejor opción ir con la identificación de usuario pura ya que SID hace que mi base de datos sea más difícil de leer, ¿estoy en lo cierto? – HOY

+0

Mostrar el SID al usuario no sirve, excepto para los administradores. Sin embargo, siempre puede convertir un SID a un nombre utilizando ['SUSER_SNAME (sid)'] (http://msdn.microsoft.com/en-us/library/ms174427.aspx) en T-SQL o utilizando ['SecurityIdentifier. Translate (typeof (NTAccount)) '] (http://msdn.microsoft.com/en-us/library/system.security.principal.securityidentifier.translate.aspx) en C#. –

2

Esta es una pregunta muy compleja.

Técnicamente No almacene el nombre. almacenar la ID, que por cierto es un GUID por tipo de todos modos.

Eso significa que es seguro cuando, por ejemplo, cambiar el nombre de la cuenta y eso es lo que ocurre con las ventanas. ¿Has visto alguna vez cuando abres derechos en un archivo, demora un segundo para mostrar los nombres? Y muestra un número primero? Eso es porque Windows tarda un poco en obtener los nombres del controlador de dominio.

SIMPLE es almacenar el nombre de la cuenta, pero quiere decir que está "muerto" en un cambio de nombre, que debe ser bastante frecuencia, Otoh. Creo que la mayoría de las soluciones van para eso;)

+0

"ID se' GUID' por tipo de todos modos." No necesariamente. Puede especificar 'SID' o' GUID'. Un 'GUID' será único en varios dominios si tiene una compañía tan grande, mientras que un' SID' no se garantiza que sea único en todos los dominios. Pero 'SID' es compatible con versiones anteriores de Windows NT. – GibralterTop

1

Al obtener la identificación de usuario actual (marcar HERE), se usa char(30).

Así, al menos, debería cambiar la longitud de 30!

1

Depende del tipo de datos en userid si es una identificación de otra tabla en su base de datos, luego guárdelo según el tipo de datos en la tabla parant. si usa el ID de usuario de Windows, guárdelo como nvarchar, pero asegúrese de que el ID de usuario más loable esté alojado. como nvarchar (50)

1

o debería incluso tienda userIds

bien la creación de nueva cuenta en Stack overflow. Acepta userids lo que significa que usa Passport Authentication. Pero aún mantiene la información del usuario en la base de datos para la relación entre consulta/respuestas/comentarios/indicadores, etc.

¿Cuál debe ser el tipo de datos?

Bueno, depende de su requisito. En caso de idioma no inglés. Debe ser NVarchar(50)

Cuestiones relacionadas