【发布时间】:2018-11-26 14:46:00
【问题描述】:
我正在通过这样的 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已将数据库上下文更改为“主”
经过一段时间的研究,我发现我可以SELECT * FROM sysusers
但这仅显示用户是否已在该服务器上注册。
我想知道是否有办法检查用户名是否为有效的 NT 用户?
【问题讨论】:
-
听起来像是应该在操作系统级别进行的那种验证,而不是查询您的数据库。
-
@SteveDrake 谢谢!这样做的伎俩,但稍作修改。
标签: c# sql asp.net-mvc windows-nt