我正在通过Web应用程序创建数据库用户,如下所示:
try
{
SetConnection(server);
string sql =
"USE [master]" +
" CREATE LOGIN" + " [TP1\\" + user + "] FROM WINDOWS WITH DEFAULT_DATABASE=[master], " +
"DEFAULT_LANGUAGE=[us_english] " +
"EXEC sys.sp_addsrvrolemember @loginame = N'TP1\\" + user + "', @rolename = N'sysadmin'";
_tableContext.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, sql);
}
catch (Exception e)
{
// log error
throw e;
}
它工作正常。
我正在测试应用程序,并键入WINDOWS-NT中不存在的名称,并得到以下错误:
找不到Windows NT用户或组“ TP1 \ MyName”。检查名字 再次。\ r \ n'TP1 \ MyName'不是有效的登录名,或者您没有 权限。\ r \ n将数据库上下文更改为“ master”
经过一段时间的研究,我发现我可以SELECT * FROM sysusers
但是,这仅向我显示是否已在该服务器上注册了用户。
我想知道是否可以通过某种方式检查用户名是否为有效的NT用户?
答案 0 :(得分:0)
此问题将被标记为重复,但为清楚起见,我只想分享我的具体情况:
感谢@SteveDrake,我找到了答案here。
我的实现
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
user = "MyName";
UserPrincipal up = UserPrincipal.FindByIdentity(
pc,
IdentityType.SamAccountName,
user);
bool UserExists = (up != null);
}
注意,我将ContextType
更改为Domain