2012-06-18 37 views

Trả lời

10

Thông tin nhận dạng người dùng Windows NT được gọi là SID, security-identifier. Biểu diễn chuỗi được chỉ định trong SID String Format Syntax và biểu diễn nguyên soái được chỉ định trong SID--Packet Representation. Nếu bạn muốn lưu trữ SID trong cơ sở dữ liệu, hãy sử dụng cùng một biểu diễn như trường sys.databases.owner_sid: varbinary (85). Để truy xuất SID đăng nhập, sử dụng SUSER_SID (cũng trả về ... varbinary(85)).

Cụ làm không cửa sắc như tên đăng nhập (domain\user hoặc [email protected]) vì những thay đổi cách thường xuyên hơn bạn mong đợi, đặc biệt trong các tập đoàn lớn. Tôi đã thay đổi khoảng 5 lần trong 10 năm.

+0

Theo như tôi hiểu từ câu trả lời, nếu tôi sẽ sử dụng userid để kết nối người dùng với một số quy trình, thì tôi nên sử dụng SID, nhưng nếu tôi sẽ sử dụng userid giống như một nhãn, thì đó là lựa chọn tốt hơn để đi với id người dùng thuần túy vì SID làm cho cơ sở dữ liệu của tôi khó đọc hơn, tôi có đúng không? – HOY

+0

Hiển thị SID cho người dùng là không sử dụng, ngoại trừ quản trị viên. Tuy nhiên, bạn luôn có thể chuyển đổi SID thành tên bằng cách sử dụng ['SUSER_SNAME (sid)'] (http://msdn.microsoft.com/en-us/library/ms174427.aspx) trong T-SQL hoặc sử dụng [SecurityIdentifier. Translate (typeof (NTAccount)) '] (http://msdn.microsoft.com/en-us/library/system.security.principal.securityidentifier.translate.aspx) trong C#. –

2

Đây là một câu hỏi rất phức tạp.

Về mặt kỹ thuật KHÔNG lưu trữ tên. lưu trữ ID, tình cờ là GUID theo loại nào.

Điều đó có nghĩa là bạn an toàn khi bạn đổi tên tài khoản và đó là những gì WINDOWS có. Bạn đã từng thấy khi nào bạn mở quyền trên một tệp phải mất một giây để hiển thị tên? Và cho thấy một số đầu tiên? Đó là bởi vì các cửa sổ mất một chút để có được tên từ bộ điều khiển miền.

SIMPLE là để lưu trữ tên tài khoản, nhưng điều đó có nghĩa là bạn "chết" khi đổi tên, tỷ lệ này phải khá cao, otoh. Tôi nghĩ rằng hầu hết các giải pháp đi cho điều đó;)

+0

"ID là' GUID' theo loại. " Không cần thiết. Bạn có thể chỉ định 'SID' hoặc' GUID'. 'GUID' sẽ là duy nhất trên nhiều tên miền nếu bạn có một công ty lớn, trong khi' SID' không được bảo đảm là duy nhất trên các tên miền. Nhưng 'SID' tương thích ngược với Windows NT. – GibralterTop

1

Khi nhận được ID người dùng hiện tại (hãy kiểm tra HERE), char(30) được sử dụng.

Vì vậy, ít nhất, bạn nên thay đổi độ dài thành 30!

1

Nó phụ thuộc vào loại dữ liệu trong userid nếu nó là một id từ một bảng i cơ sở dữ liệu của bạn, sau đó lưu nó theo kiểu dữ liệu trong bảng parant. nếu nó cửa sổ userid sau đó lưu nó như nvarchar nhưng chắc chắn rằng userid logest được cung cấp. như nvarchar (50)

1

hay nên tôi thậm chí cửa hàng userIds

Trong khi tạo tài khoản mới trong Stack overflow. Nó chấp nhận người dùng có nghĩa là nó sử dụng Passport Authentication. Tuy nhiên, nó vẫn giữ thông tin người dùng trong cơ sở dữ liệu về mối quan hệ giữa truy vấn/trả lời/nhận xét/cờ v.v.

Loại dữ liệu phải là gì?

Vâng, tùy thuộc vào yêu cầu của bạn. Trong trường hợp laguage không phải tiếng Anh. Phải là NVarchar(50)

Các vấn đề liên quan