我是一名软件开发人员,正在完成一个 Web 应用程序。该应用程序使用我的 SQL Server 2008“SQLServer_1”中的数据库“DB1”。
我想创建一个受限用户,Web 应用程序将在其连接字符串中使用该用户。该用户将被允许执行存储过程列表,而不能执行其他任何操作。因此,不应允许用户执行该列表之外的临时 SQL 或其他存储过程。
“用户”和“登录”之间有点混乱,我真的不知道应该在哪里创建新的“帐户”。
我应该遵循哪些步骤?
提前致谢。
答案1
一切都归结为范围。登录名是服务器级帐户,而用户是数据库级帐户。用户需要映射到登录名,因此您将首先创建登录名(同时创建一种方式让其向服务器进行身份验证)。接下来,在应用程序的数据库中,您将创建用户。执行此操作时,您将可以选择此用户代表哪个登录名。您将选择之前创建的登录名。然后,您可以将权限分配给您希望它能够执行的存储过程。当然,还有一种不那么繁琐的方法:
create login [your login name here] from windows; --if the login is a Windows account
create login [your login name here] with password 'some super secret password'; --if not a Windwos account
use [DB1];
create user [your login name here] for login [your login name here];
grant execute on [your stored procedure here] to [your login name here];
grant execute on [another stored procedure here] to [your login name here];
...
答案2
我不太明白你的意思?如果你不知道“用户”、“登录”和“角色”之间的区别,那么请遵循优秀的文档来自 Microsoft。从那里您可以访问任何其他相关主题,例如授予存储过程的执行权限。