gpt4 book ai didi

asp.net - 授予 Asp.net mvc 应用删除和创建 SQL Server 数据库的权限

转载 作者:行者123 更新时间:2023-12-02 15:21:53 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 R2,但遇到了问题。我开发的应用程序需要在位于不同地点的客户站点进行测试。因此,我计划配置客户端的计算机一次,然后对于与应用程序相关的任何更改,我将只分发一个 ASP.NET MVC 部署包,客户端可以将其部署在 IIS 上。为此,我需要为我的 ASP.NET 应用程序提供删除和创建数据库的能力(通过 CodeFirst Entity Framework )。 在当前配置中,我面临与删除数据库相关的权限问题。应用程序不知何故无法删除数据库。以下是我正在使用的 IIS 和 SQL Server 配置的摘要。

对于 IIS,我已按照标准做法将应用程序池标识设置为“本地服务”。下面给出了 asp.net web.config 文件中的连接字符串。

connectionString="Server=.\SQLEXPRESS;Database=SomeDatabase;Trusted_Connection=true;User Id=someuser;Password=somepassword" />

对于 SQL Server 服务,我提供了“本地服务”作为登录,再次为该服务提供了最低访问权限。对于 SQL Server 实例登录,我定义了用户和密码,并赋予了完整的权限(“sysadmin”)角色。

完成此配置后,我希望 IIS 应用程序能够使用上面创建的用户和密码进行连接,并能够删除和创建 SQL Server 数据库。但我的删除数据库权限被拒绝。下面给出了异常(exception)情况。

System.Data.SqlClient.SqlException (0x80131904): Cannot drop the database 'SomeDatabase', because it does not exist or you do not have permission.

我已检查数据库是否存在,因此它归结为权限。我是否遗漏了某些配置?

最佳答案

需要明确的是,您的连接字符串格式有点不正确,并且可能不会按您的预期运行。

当您在连接字符串中指定 Integrated Security=true 时,将进行 Windows 身份验证。连接字符串中的任何 user id= 属性都将被忽略。

通过删除 Integrated Security=true 属性切换到 SQL Server 身份验证模式。

   Server=.\SQLEXPRESS;Database=SomeDatabase;
User Id=someuser;Password=somepassword;

此外,DROP DATABASE 命令可以由数据库所有者、db_owner 角色成员的用户或服务器管理员角色的用户执行。

将数据库用户 someuser 添加到 db_owner 角色。

 EXEC sp_addrolemember 'db_owner', 'SomeUser';

或者,如果您确定上述帐户不应担任此角色(即限制性安全环境、策略等),请考虑为此目的创建和使用另一个帐户。这可能意味着维护另一个连接字符串。如果用户/角色的分离对您来说足够重要,也许第二个选项会起作用。

关于asp.net - 授予 Asp.net mvc 应用删除和创建 SQL Server 数据库的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com