2016-05-31 26 views

回答

-1

您可以创建一个日期数据类型的新列,并调用它结束日期。您可以将2016年9月24日插入结束日期对于用户和(取决于您如何访问它)只需使用if声明比较当前日期和结束日期。例如: -

if(CURDATE() < endDate) 
-1

我会写,将在该撤销用户的正确的日期运行作业。

我不会修改模式来处理一次性案件。对数据库权限的控制应该在数据库的外部。

0

没有规定在有限的时间内授予访问权限。

祝你好运。

+0

当有人提到SQL Server中的时间依赖活动时,有一件事情是您想到的是SQL Server代理,我想我已经找到了解决此问题的方法,请参阅我的答案: ) –

0

我能想到的唯一方法是创建SQL Server Agent Job

  1. 创建工作一个2个步骤将用户添加到数据库角色db_datareader然后anotehr一步带走该用户的角色成员。

授予用户的权限应该看起来像

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 
的步骤
  • 安排工作每天运行两次。每8小时发生一次。假设你只希望用户访问8小时。
  • 在开始日期和结束日期选项中使用24 September 2016。因此,该作业仅在该日期执行,并且从不在该日期之前或之后执行。
  • 确保出现次数与每个步骤的IF语句中的逻辑匹配。
  • 作业数据库上下文应该是用户需要权限的数据库。
  • 相关问题