我正在尝试使用 SQL Server 2012。我有一个数据库,我需要通过代码创建一个新的数据库用户。但我不处理它。
首先,这是我的 SQL 查询
CREATE USER TestUser FOR LOGIN TestUser
在 SQL Server 中,它运行良好。
我有这段代码:
internal class ServerContext : DbContext
{
public ServerContext(DbContextOptions<ServerContext> options) : base(options) { }
}
<'''>
DbContextOptions<ServerContext> _options;
var optionsBuilder = new DbContextOptionsBuilder<ServerContext>();
var connectionString = string.Format(ConnectionString.ConnectString, url, dbName, login, password);
_options = optionsBuilder.UseSqlServer(connectionString).Options;
using (var context = new ServerContext(_options))
{
if (data.Count() == 0)
{
context.Database.ExecuteSqlCommand(Query.CreateDbUser, new SqlParameter("@Login", "user"));
}
}
<'''>
public static class Query
{
public static string CreateDbUser = "CREATE USER @Login FOR LOGIN @Login";
}
此查询转换为:
exec sp_executesql N'CREATE USER @Login FOR LOGIN @Login',N'@Login nvarchar(4)',@Login=N'User'
我得到这个错误:
“@Login”周围的语法无效。
我认为这是由于参数“user”作为字符串传递并在执行查询时用引号指定。
月关宝盒
相关分类