在一个类中,我正在创建登录到 sql 的工作正常。我想添加一些错误检查来首先检查登录是否已经存在于 SQL 中。如果确实如此,则不要尝试添加登录名,而是映射到表等。
在 sql 中,我使用以下命令检查登录:
select name from sys.server_principals where name = 'viewer2'
我厌倦了在我的课堂上使用它如下
protected static bool CheckForExistingUser(DbContext context, string userName)
{
string checkForUser =
@" SET NOCOUNT ON
DECLARE @userName AS nvarchar(max) = {0}
EXEC('
SELECT name FROM sys.server_principals where name = ['+ @userName +']
')";
return Convert.ToBoolean(context.Database.ExecuteSqlCommand(checkForUser, userName));
}
但是,当我调用此方法时,我得到一个异常,即该列(传入的任何用户名)无效
$exception {"Invalid column name 'viewer2'."} System.Exception {System.Data.SqlClient.SqlException}
关于导致这种情况的任何想法,是否有更好的方法来检查代码中的 sql db 中是否存在登录?
干杯