當前位置:首頁 » 安全設置 » 資料庫在網路設置時間限制

資料庫在網路設置時間限制

發布時間: 2022-12-07 15:01:34

A. 如何設置限制實現訪問oracle資料庫ip,mac,時間。

一般來說,這不是資料庫的功能。
要使用這功能,你不能夠直接登錄資料庫,而是登錄到應用伺服器,這之間的協議可以認證MAC或其他特徵碼,證書什麼的。由中間的應用伺服器代理資料庫。
還有一個簡化的方法,把資料庫的賬號、口令存在ldap里,在獲取ldap時驗證MAC,才提供口令。

B. 資料庫怎麼設置錄入限制,就是在一個時間段內能夠增加內容,其餘時間不能增加內容 兄弟分不多,謝謝各位

你說的這個如果不用程序控制的話很麻煩,DBMS本身並沒有對數據錄入時間的限制,只是在建表語句裡面的check項中檢查一下數據有關的東西,但是這個功能應該可以變通實現,比如在你錄入的數據項中增加一個系統時間欄位,,然後在另一個表裡面錄入時間段數據,建表語句有一個check檢查你錄入的時間和你限定時間段,在錄入數據的時候check系統時間和你錄入的時間段,如果不滿足check的話,是無法錄入數據的

觸發器我也想過,按個辦法太麻煩,先插入,不滿足在回滾或刪除,容易出錯不太適合,在建表語句裡面加check比較穩妥

C. mysql 在資料庫中設置時間

1、非要用datetime的話就不能用default而要通過trigger來實現
2、在插入時value用now()函數、或者自行取運行時間
3、欄位類型改變為:
datecreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
datemodified timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
但是其實不可行,因為一個表只能有一個CURRENT_TIMESTAMP,但你有三個欄位。

所以當有多個時間可能還是得結合方式2與方式3來綜合處理。當然全都用方式2也就不會提出這種問題了。

D. 如何設置資料庫的連接數和連接超時時間

如何設置資料庫的連接數和連接超時時間
連接數的話可以修改spfile文件來約束
查看當前的連接數:
select count(*) from v$process;
–資料庫允許的最大連接數:
select value from v$parameter where name = 『processes』;
–修改最大連接數:alter system set processes = 500 scope = spfile;
–重啟資料庫:shutdown immediate;
startup;
–查看當前有哪些用戶正在使用數據
SELECT osuser, a.username,cpu_time/executions/1000000||』s』, sql_fulltext,machine
from v$session a, v$sqlarea b where a.sql_address =b.address order by cpu_time/executions desc;
連接超時時間的話有很多辦法,最常用的是
在你的oracle伺服器的 $ORACLE_HOME/network/admin 中的 sqlnet.ora中設置參數SQLNET.EXPIRE_TIME= n n為一個指定的分鍾數
當客戶端中斷,在 n 分鍾內就可以自動斷開連接。

E. 如何給SQL Server設置保持連接的時間

如何給SQL Server設置保持連接的時間?
以 sql server 2000 為例,打開<企業管理器>,選擇 <sql server 組>下面,對應的伺服器,<右鍵>,<屬性>,在彈出的選項頁上,選擇<連接>,下面有個<查詢超時設定>, 默認值是600 ,這里可以修改為大一點。點確定,就可以了。

說明:600秒一般情況下,滿足開發應用,但在實際應用時,有可能,將這值設得較大也沒有完成需要處理的任務就斷開了,方法,是要把客戶端的連接對象時間也設大些。比如,在.net下,要將connection和command對像的timeout時間,也設得較大,才能執行比較大的任務。

F. mysql_connect()連接資料庫超時設置

好象沒有,可以藉助其他方法,但是你就不能die()了,例如

set_time_limit(5);
$conn=mysql_connect();
if($conn){
set_time_limit(30);
}


set_time_limit用於控制php最大運行時間,0表示無限制,以上代碼意思是先將頁面運行時間設為5秒,5秒內如果還在嘗試連接頁面就會提示已經超過了最大運行時間,否則重新設置頁面最大運行時間為30秒。


不理解,這樣做有什麼意義嗎?如果你的網站連接一次資料庫都要超過1秒,你的網站的速度得多慢啊。正常的網站連接資料庫都是毫秒級別的。

G. C#連接mysql資料庫,怎麼設置超時時間

MySQL查詢超時的設置方法

為了優化OceanBase的query timeout設置方式,特調研MySQL關於timeout的處理,記錄如下。

[plain]
mysql> show variables like '%time%';
+----------------------------+-------------------+
| Variable_name | Value |
+----------------------------+-------------------+
| connect_timeout | 10 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| delayed_insert_timeout | 300 |
| flush_time | 1800 |
| innodb_lock_wait_timeout | 50 |
| innodb_old_blocks_time | 0 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lc_time_names | en_US |
| lock_wait_timeout | 31536000 |
| long_query_time | 10.000000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| slow_launch_time | 2 |
| system_time_zone | |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| timestamp | 1366027807 |
| wait_timeout | 28800 |
+----------------------------+-------------------+
21 rows in set, 1 warning (0.00 sec)

重點解釋其中幾個參數:

connect_timeout:

The number of seconds that the mysqld server waits for a connect packet before respondingwith Bad handshake. The default value is 10 seconds as of MySQL 5.1.23 and 5 seconds before that. Increasing the connect_timeout value might help if clients frequently encounter errors of the form Lost connection to MySQL server at 『XXX』, system error: errno.
解釋:在獲取鏈接時,等待握手的超時時間,只在登錄時有效,登錄成功這個參數就不管事了。主要是為了防止網路不佳時應用重連導致連接數漲太快,一般默認即可。

interactive_timeout:

The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See alsowait_timeout.

解釋:一個持續SLEEP狀態的線程多久被關閉。線程每次被使用都會被喚醒為acrivity狀態,執行完Query後成為interactive狀態,重新開始計時。wait_timeout不同在於只作用於TCP/IP和Socket鏈接的線程,意義是一樣的。

MySQL可以配置連接的超時時間,這個時間如果做得太長,甚至到了10min,那麼很可能發生這種情況,3000個鏈接都被占滿而且sleep在哪,新鏈接進不來,導致無法正常服務。因此這個配置盡量配置一個符合邏輯的值,60s或者120s等等。
說人話:

命令行下面敲一個命令後,直至下一個命令到來之前的時間間隔為interactive_time,如果這個時間間隔超過了interactive_timeout,則連接會被自動斷開,下一個命令失敗。不過一般的mysql客戶端都有自動重連機制,下一個命令會在重連後執行。

[sql]
mysql> set interactive_timeout = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> show session variables like '%timeout%';
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| interactive_timeout | 1 |
| wait_timeout | 28800 |
+----------------------------+----------+
10 rows in set (0.00 sec)

=====

[sql]
mysql> set wait_timeout = 1;
Query OK, 0 rows affected (0.00 sec)
【去泡杯茶,等會兒】

mysql> show session variables like '%timeout%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 7
Current database: *** NONE ***

+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+----------------------------+----------+
10 rows in set (0.01 sec)

wait_timeout:
The number of seconds the server waits for activity on a noninteractive connection (連接上沒有活動命令,可能是客戶端喝咖啡去了。)before closing it. Before MySQL 5.1.41, this timeout applies only to TCP/IP connections, not to connections made through Unix socket files, named pipes, or shared memory.
On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client
這里順帶解釋一下什麼是non-interactive connection

> Non-Interactive Commands
Just do a quick look up on a table without logging into the client, running the query then logging back out again.
You can instead just type one line using the ' -e ' flag.
[sql]
c:\mysql\bin\mysql -u admin -p myDatabase -e 'SELECT * FROM employee'

net_read_timeout / net_write_timeout
The number of seconds to wait for more data from a connection before aborting the read. Before MySQL 5.1.41, this timeout applies only to TCP/IP connections, not to connections made through Unix socket files, named pipes, or shared memory. When the server is reading from the client, net_read_timeout is the timeout value controlling when to abort. When the server is writing to the client, net_write_timeout is the timeout value controlling when to abort. See also slave_net_timeout.
On Linux, the NO_ALARM build flag affects timeout behavior as indicated in the description of the net_retry_count system variable.
解釋:這個參數只對TCP/IP鏈接有效,分別是資料庫等待接收客戶端發送網路包和發送網路包給客戶端的超時時間,這是在Activity狀態下的線程才有效的參數

JDBC setQueryTimeout函數:

為了避免查詢出現死循環,或時間過長等現象,而導致線程阻塞,在獲得Statement的實例後,stmt.setQueryTimeout(10); 避免因為查詢導致程序出現線程阻塞。

但昨天發現程序出現了,「ORA-01013: 用戶請求取消當前的操作」的異常。手工執行出錯SQL語句發現,這個語句耗時20多秒。因為setQueryTimeout(10),所以還沒有執行完查詢語句就拋出異常了。使用setQueryTimeout(10)時一定要把時間設置的長一些,如60秒以上。只要不導致線程長期阻塞,就可以。太短了容易拋出,「ORA-01013: 用戶請求取消當前的操作」的異常

JDBC實現setQueryTimeout的原理:

[java]
class IfxCancelQueryImpl extends TimerTask
implements IfmxCancelQuery
{
IfxStatement stmt;
Timer t = null;

public void startCancel(IfxStatement paramIfxStatement, int paramInt)
throws Exception
{
this.stmt = paramIfxStatement;
this.t = new Timer(true);
this.t.schele(this, paramInt * 1000);
}

public void run()
{
try
{
this.stmt.cancel();
this.t.cancel();
}
catch (SQLException localSQLException)
{
this.t.cancel();
throw new Error(localSQLException.getErrorCode() + ":" + localSQLException.getMessage());
}
}
}

H. ACCESS資料庫 如何定義時間限制

不行 你可以用其他方法 在資料庫中來個表有這兩個時間 用程序判斷到期程序禁止使用~ 你在給Access 設置一個密碼不就搞定了~

I. 請問,ASP與ACCESS資料庫怎麼實現使用時間限制功能,比如一個用戶使用的期限為30天30天後就

從最初的資料庫發展到今天的大型資料庫管理系統,成為我們日常生活中重要的組成部分。假如不藉助資料庫的幫助,好多簡單的工作將會變得冗長乏味,甚至會難以實現。本文從ACESS資料庫的特徵及與SQL SERVE資料庫的區別展開詳細的論述。

關鍵字
VBA語言 ,ACCESS資料庫,ACCESS的特徵,
桌面型資料庫 SQL SERVE MDB ACCESS
擴展 ActiveX 控制項 標准SQL語言
遠程管理 資料庫開發軟體 OLE DB 引擎 辦公應用軟體
跨庫查詢 「最終用戶」 Connection 可擴展性
遠程管理

在本學期OFFICE課程中,我們認識了ACCESS資料庫,ACCESS資料庫是種怎樣的資料庫,以及它與其他資料庫有何區別,我想用我找到的一些資料來說明一下。
通過學習我們發現ACCESS 是桌面型關系資料庫,只適合數據量少的應用,在處理少量數據和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問客戶端不能多於4個。ACCESS資料庫有一定的極限,如果數據達到100M左右,很容易造成伺服器假死,或者消耗掉伺服器的內存導致伺服器崩潰。這樣我們需要想一想,既然ACCESS有一定的的限制,那另外的一些資料庫又怎樣呢?我們通過和其他資料庫的比較來說明。
首先,我們先具體的來看一下ACCESS的特性,ACCESS是MICROSOFT OFFICE的一個組件,一個前後台結合的資料庫「軟體」。也就是說ACCESS既擁有用戶界面(VB可以用來開發用戶界面);也擁有邏輯、流程處理,即VBA語言(VB也可以用來做邏輯處理);又可以存儲數據,即在「表」中存儲數據。而所有這些都存儲在一個 MDB 格式的文件中(當然,也可以是 MDE 等格式)。 ACCESS不是一種存儲格式,是一種軟體。請大家嚴格區分 ACCESS 軟體與 MDB 格式。VB下調用 MDB 格式(或 JET DB)只是調用一種格式的文件而已,並沒有調用到 ACCESS,其實官方說法叫 「VB 的 JET 應用」。另外, MDB 格式的文件也可以被其他開發工具,比如 DELPHI / PB / C / PHP / ASP / CGI / C# / J# / JAVA / VB.NET / C.NET.... 調用。但是被調用的只是 MDB 文件,很多 ACCESS 軟體所具有的功能,這些開發工具是無法調用的。而這種格式只要系統中有 OLE DB 引擎就可以支持。
ACCESS 中的一些對象可以被 VB 調用,但是必須在調用的機器上安裝 ACCESS 這個軟體(COPY一個MDB文件是不夠的)或者安裝額外的 ACTIVEX 控制項
MDB 是一種文件格式,其中的數據以特定方式組織起來,而 ACCESS 這種軟體的默認存儲格式正好是 MDB ACCESS 這個軟體本身就具有開發者使用的界面和適合於「最終用戶」的界面,也就是我們通常說的前後台結合。
然後我們看一下ACCESS與其它資料庫的區別,在這里我們著重來看ACCESS與SQL SERVER的區別:
首先,ACCESS有一定的極限,如果數據達到100M左右,很容易造成伺服器假死,或者消耗掉伺服器的內存導致伺服器崩潰。 而SQL SERVER是基於伺服器端的中型的資料庫,可以適合大容量數據的應用,在功能上管理上也要比ACCESS要強得多。在處理海量數據的效率,後台開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標准SQL語言,兩者基本上都可以通用的。SQL SERVER還有更多的擴展,可以用存儲過程,資料庫大小無極限限制。
其次ACCESS是桌面型資料庫,優點是:操作靈活、轉移方便、運行環境簡單,對於小型網站的資料庫處理能力效果還不錯。缺點是:不支持並發處理、資料庫易被下載存在安全隱患、數據存儲量相對較小、數據量過大時嚴重影響網站訪問速度和程序處理速度。SQL SERVER是基於伺服器端的企業級資料庫,適合大容量數據和大流量網站的應用,在性能、安全、功能管理、可擴展性上要比ACCESS強很多,兩者並非同級別的資料庫,有些功能ACCESS甚至無法做到。缺點是:一般用戶無法直接對SQL SERVER進行遠程管理、空間租用的成本比ACCESS稍高。
再次,就規模來說,VFP是一個中型資料庫開發軟體,比不上ORICAL、INFOMATION、POWERBUILDER等,是微軟購並FOX公司後開發的一個資料庫開發軟體。可用於中型資料庫軟體工程的建構。可以用來做商業開發ACCESS嚴格來說不是一個資料庫應用程序的開發工具,基本上是一個辦公應用軟體;不能用於商業用途的開發。只能在OFFICE環境下運行,受OFFICE本身的限制。所用語言只是基於VB語言的輔助性編程的VBA。就其規模來說屬於小型的資料庫應用軟體。早年曾有過ACCESS2.0(英文版)的可以用於商業用途的資料庫開發軟體。但後來不知道為什麼沒有繼續研發出新的ACCESS版本。 兩者可拓展型相比,ACCESS好些,可使用的編程語言較多。ACCESS是 MICROSOFT OFFICE 的一個組件,一個前後台結合的資料庫「軟體」。 也就是說ACCESS既擁有用戶界面(VB可以用來開發用戶界面);也擁有邏輯、流程處理,即VBA語言(VB也可以用來做邏輯處理);又可以存儲數據,即在「表」中存儲數據。而所有這些都存儲在一個 MDB 格式的文件中(當然,也可以是 MDE 等格式)。
總之,每一種資料庫都有它們各自的優勢和缺點,作為計算機系專業的學生,我們有必要掌握它們各自的優缺點以便靈活的掌握各種資料庫的應用,並在行業中取得優秀的成就。

J. SQL Server資料庫中限制某一個用戶在指定時間段內登錄的SQL語句

此例子的用戶為:user
創建觸發器,限制user用戶的登錄時間段(在8:00—18:00之間禁止登錄)
CREATE TRIGGER noconn
ON ALL SERVER WITH EXECUTE AS 'user'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'user' AND CONVERT(CHAR(10),GETDATE(),108) BETWEEN '8:00:00' AND '18:00:00'
ROLLBACK;
END;