如何在 SqlServer Express 2008 上设置数据库权限

如何在 SqlServer Express 2008 上设置数据库权限

我使用 Entity Framework 的代码优先方法。当我第一次运行应用程序时,它将尝试创建与我的 MVC 模型匹配的数据库。

但是我认为它没有创建它的权限。我收到以下错误:

数据库‘master’中的 CREATE DATABASE 权限被拒绝。

哪个用户正在尝试访问 SqlServer,我如何添加它的权限以使其工作?

这是我正在使用的连接字符串(应该是正确的......)

<add name="ContextDb"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;initial catalog=ContextDb"
     providerName="System.Data.SqlClient"/>

干杯

答案1

一般提示:不要这样做。

数据库创建(除了非常简单的场景外)是一种管理行为,不应由用户执行。事实上,您不应该期望能够执行任何 DDL - 不能创建表等。什么都不能。

初学者的基本安全 101 指出,数据库的创建和维护不是由不受信任的用户完成,而是由管理员完成。

这就是为什么您通常在设置和/或由管理员运行的工具中执行此操作。

只有极其简单的场景才能避免这种情况,而且只能使用本地 Express 数据库。但即便如此,您仍然非常信任用户 - 我真的希望这不是高级的东西。如果在 SQL Express 端没有任何重新配置​​,这意味着用户必须是管理员 ;)

答案2

当您在连接字符串中使用“Integrated Security=SSPI”时,这意味着将使用运行可执行文件的用户的 Windows 凭据建立与 SQL 的连接。该网站connectionstrings.com是构建连接字符串的一个很好的参考。

相关内容