C# 创建数据库用户并以编程方式登录

C# 创建数据库用户并以编程方式登录,c#,.net,sql-server,C#,.net,Sql Server,我觉得我犯了一些基本的错误。我似乎无法使用参数添加用户 以下操作失败,因为“@x”附近的语法不正确。: var Cmd = new SqlCommand("CREATE LOGIN @x FROM WINDOWS; CREATE USER @x FOR LOGIN @x", SqlConn); Cmd.Parameters.AddWithValue("@x", user); Cmd.ExecuteNonQuery(); 然而,这是可行的: var Cmd = new SqlCommand("C

我觉得我犯了一些基本的错误。我似乎无法使用参数添加用户

以下操作失败,因为“@x”附近的
语法不正确。

var Cmd = new SqlCommand("CREATE LOGIN @x FROM WINDOWS; CREATE USER @x FOR LOGIN @x", SqlConn);
Cmd.Parameters.AddWithValue("@x", user);
Cmd.ExecuteNonQuery();
然而,这是可行的:

var Cmd = new SqlCommand("CREATE LOGIN @x FROM WINDOWS; CREATE USER @x FOR LOGIN @x", SqlConn);
Cmd.CommandText = Cmd.CommandText.Replace("@x", "[" + user + "]");
Cmd.ExecuteNonQuery();
(其中用户采用域\用户格式:
user=@“mycomputer\myuser”;

编辑
我可以看穿右边的相关问题,这是重复的。答案是不能使用参数创建用户。不知道为什么。也许我应该用另一种方式来解决我的基本问题?以下是我努力实现的目标:

我在数据库中有一个角色,我想向其中添加用户,以便他们可以访问数据库。我希望管理员能够从软件中做到这一点(允许db访问[domain\user]),而无需成为MR SQL并自己运行management studio。如何执行此操作?

不支持。看起来您需要在这种情况下使用

数据定义语言

数据操作语言


与SQL Server有关。您试图在不允许使用变量的情况下使用变量。另外,请注意第二种方法-您容易受到SQL注入攻击。呃,是的-这就是问题的关键!我试图使用第一种方法,但不能!!