【发布时间】:2016-05-31 21:46:36
【问题描述】:
所以我正在做这个 SQL SERVER 学校项目,我想向特定用户添加在有限时间内选择的权利,比如说直到 2016 年 9 月 24 日。 有可能吗?如果可以,怎么做? 谢谢!
【问题讨论】:
-
您可能拥有上述 3 种不同的 sql server 技术。命名您的服务器并删除其他标签
标签: sql-server
所以我正在做这个 SQL SERVER 学校项目,我想向特定用户添加在有限时间内选择的权利,比如说直到 2016 年 9 月 24 日。 有可能吗?如果可以,怎么做? 谢谢!
【问题讨论】:
标签: sql-server
没有规定在有限的时间内授予访问权限。
祝你好运。
【讨论】:
我能想到的唯一方法是创建一个SQL Server Agent Job。
db_datareader,然后再执行一个步骤以取消该用户的角色成员资格。 授予用户权限的步骤应该类似于
IF (GETDATE() >= '2016-09-24 08:58:59.000'
AND GETDATE() <= '2016-09-24 09:01:00.000')
BEGIN
EXEC sp_addrolemember N'db_datareader', N'UserA'
END
撤销用户权限的第二步应该类似于
IF (GETDATE() >= '2016-09-24 16:58:59.000')
BEGIN
EXEC sp_droprolemember N'db_datareader', N'UserA'
END
24 September 2016。因此,作业仅在该日期执行,而不会在该日期之前或之后执行。【讨论】:
我会写一个在那个日期运行的作业,它会撤销用户的权利。
我不会修改架构来处理一次性案例。对数据库的权限控制应该在数据库之外。
【讨论】:
您可以创建一个具有 date 数据类型的新列,并将其命名为 endDate。您将 2016 年 9 月 24 日插入用户的 endDate 中,并且(取决于您如何访问它)只需使用 if 语句比较当前日期和结束日期。例如:-
if(CURDATE() < endDate)
【讨论】: