❶ sql 如何查詢歷史操作語句
打開Log Explorer -> Attach Log File -> 選擇SQL Server伺服器和登陸方式 -> Connect -> 在Database Name中選擇資料庫 -> Attach-> 左面對話框中Browse-> View Log-> 就可以看到log記錄了
想恢復的話: 右鍵Log記錄 Undo Transation-> 選擇保存文件名和路徑-> 然後打開該文件到查詢分析器里執行 T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table .... 然後將此insert table的代碼放到查詢分析器里執行.就可以恢復數據.
Log Explorer使用的一個問題
1)對資料庫做了完全 差異 和日誌備份 備份時選用了刪除事務日誌中不活動的條目 再用Log Explorer打試圖看日誌時 提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務日誌中不活動的條目 再用Log Explorer打試圖看日誌時,就能看到原來的日誌
2)修改了其中一個表中的部分數據,此時用Log Explorer看日誌,可以作日誌恢復
3)然後恢復備份,(注意:恢復是斷開Log Explorer與資料庫的連接,或連接到其他數據上, 否則會出現資料庫正在使用無法恢復) 恢復完後,再打開Log Explorer 提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才在2中修改的日誌記錄,所以無法做恢復.
❷ 如何查看mysql執行的所有以往 sql 語句歷史命令
mysql 有這樣一個機制,就是,在用戶的主目錄下會生成一個.mysql_history 的文件,這個文件會記錄用戶登錄mysql後,在mysql中敲過的每條命令。
cat ~/.mysql_history 即可以看到以前的命令歷史。
❸ 請問,sql語句怎麼寫,查詢截止昨天以前的所有數據
select
*
from
tablename
where
datediff(day,col_1,getdate())
>
0
查詢表中與當前時間相差大於0天的所有數據.
再看看別人怎麼說的。
❹ sql語句查詢本年記錄總數和去除本年的以前年的總記錄數
什麼資料庫,以sqlserver為例
2
select count(*) from 公文表 where year(審核日期) =year(getdate()) --year就是取年份的函數,getdate()是取當前日期,所以第三題我寫的你就看懂了吧
3
select count(*) from 公文表 where year(審核日期)<=year(getdate())-1
❺ 求助,關於用sql語句查詢當年數據的問題
select * from A where A.XXX between 年初 and 年末尾;--獲取年初年末的函數自己查(每個人定義的時間觀念不同)。
❻ 如何查看mysql執行的所有以往 sql 語句歷史命令
轉:
如果你想知道mysql在干嗎,需要配置log
my.ini文件中
log=log路徑 比如D:/MySQL/datalog.log
配置後重啟mysql服務,然後就可以查看mysql執行的sql語句了,
如果你沒開啟日誌的話,那就沒辦法
❼ 在SQL語句中,如何實現查詢當月數據和當年數據
select * from yh.zsxx where to_char(rkrq,'yyyy-mm') = to_char(sysdate,'yyyy-mm') ——當月數據
select * from yh.zsxx where to_char(rkrq,'yyyy') = to_char(sysdate,'yyyy')——當年珊瑚橘
❽ SQL語句:查詢某一年、月、日的記錄
SQL語句:查詢某一年、月、日的記錄
$sql="select * from dbname where YEAR(PatchDate)=".$year." and MONTH(PatchDate)=".$month." order by ID desc";
❾ 怎麼 查看資料庫最近曾經執行過的SQL語句
oracle 查詢最近執行過的 SQL語句
select sql_text,last_load_time from v$sql order by last_load_time desc;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'select%' ORDER BY last_load_time DESC;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'update%' ORDER BY last_load_time DESC;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and last_load_time like' 14-06-09%' ORDER BY last_load_time DESC;
---正在執行的
select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT
from v$session a, v$sqlarea b
where a.sql_address = b.address
---執行過的
select b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT
from v$sqlarea b
where b.FIRST_LOAD_TIME between '2009-10-15/09:24:47' and
'2009-10-15/09:24:47' order by b.FIRST_LOAD_TIME
(此方法好處可以查看某一時間段執行過的sql,並且 SQL_FULLTEXT 包含了完整的 sql 語句)
其他
select OSUSER,PROGRAM,USERNAME,SCHEMANAME,B.Cpu_Time,STATUS,B.SQL_TEXT
from V$SESSION A LEFT JOIN V$SQL B ON A.SQL_ADDRESS=B.ADDRESS AND A.SQL_HASH_VALUE=B.HASH_VALUE order by b.cpu_time desc
select address, sql_text, piece
from v$session, v$sqltext
where address = sql_address
-- and machine = < you machine name >
order by address, piece
查找前十條性能差的sql.
SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea
order BY disk_reads DESC )where ROWNUM<10 ;
查看佔io較大的正在運行的session
SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,
se.terminal,se.program,se.MODULE,、se.sql_address,st.event,st.
p1text,si.physical_reads,
si.block_changes FROM v$session se,v$session_wait st,
v$sess_io si,v$process pr WHERE st.sid=se.sid AND st.
sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.
wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC