我应该如何将windows userid存储在数据库中?

时间:2012-06-18 10:19:56

标签: sql-server sql-server-2008 sqldatatypes userid

目前我在sql server中将用户的Windows帐户存储为nvarchar(10),这是存储用户ID的正确方法吗?应该是什么数据类型?或者我应该存储用户ID?

5 个答案:

答案 0 :(得分:11)

Windows NT用户身份称为 SID security-identifier。它的字符串表示在SID String Format Syntax中指定,编组表示在SID--Packet Representation中指定。如果要在数据库中存储SID,请使用与sys.databases.owner_sid字段相同的表示形式: varbinary(85)。要检索登录SID,请使用SUSER_SID(也返回... varbinary(85))。

特别是将身份存储为登录名(domain\useruser@domain),因为这些更改方式比您预期的更频繁,特别是大公司。我10年后改变了5次。

答案 1 :(得分:2)

这是一个非常复杂的问题。

技术上不要存储名称。存储ID,无论如何它依次是GUID。

这意味着当您重命名帐户时这是安全的,这就是WINDOWS所做的。有没有看到当你打开文件的权限时,需要一秒钟来显示名称?并先显示一个数字?这是因为windows需要一点点来从域控制器获取名称。

SIMPLE是存储帐户名称,但这意味着你在重命名时“死了”,这应该是非常快的,otoh。我认为大多数解决方案都适用于此;)

答案 2 :(得分:1)

获取当前用户ID(选中HERE)时,会使用char(30)

所以,至少,您应该将长度更改为30!

答案 3 :(得分:1)

如果它是来自您数据库的另一个表的id,则取决于userid中的数据类型,然后根据parant表中的数据类型保存它。如果是windows userid然后将其保存为nvarchar,但要确保容纳logest userid。比如nvarchar(50)

答案 4 :(得分:1)

  

或者我应该存储用户ID

Stack overflow中创建新帐户时。它接受Google/Facebook or Yahoo个用户ID,表示它使用Passport Authentication。但它仍然将用户信息保存在数据库中,以便查询/回复/评论/标记等之间的关系。

  

数据类型应该是什么?

嗯,这取决于你的要求。如果是非英语语言。必须是NVarchar(50)