2016-05-31 27 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語句中的邏輯匹配。
  • 作業數據庫上下文應該是用戶需要權限的數據庫。
  • 相關問題