1. sql執行錯誤怎麼辦
MySQL軟體所提供的許可權(mysql.user、mysql.db、mysql.host)
(1) 系統表mysql.user
user許可權表中欄位分為四類: 用戶欄位、許可權欄位、安全欄位和資源控制欄位。用戶欄位
許可權欄位
安全欄位
- # 查看是否支持ssl標准show variables like 'have_openssl';123
資源控制欄位
用戶欄位
mysql.db表許可權欄位
系統表mysql.tables_priv表結構
mysql.tables_priv表結構.png
mysql.tables_priv表結構.png
系統表mysql.columns_priv的表結構
用戶機制
(1) 登錄和退出MySQL軟體的完整命令- # 登錄mysql -h 127.0.0.1 -u root -p# 退出(q)exit|quit12345
執行CREATE USER語句來創建用戶賬戶
- create user 'mazaiting'@'localhost' identified by '123456';12
執行INSERT語句來創建用戶
- insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)values('localhost', 'linghaoyu', password('linghaoyu'),'','','');# 使新建用戶生效flush privileges;12345
執行GRANT語句來創建用戶
- grant select on company.t_deptto 'wangxingqin'@'localhost' identified by 'wangxingqin';123
修改超級許可權用戶賬戶密碼
- # 通過mysqladmin命令修改root用戶密碼mysqladmin -u root -p password "123456"# 通過SET命令修改密碼set password=password("123456");# 更新系統表mysql.user數據記錄修改root用戶密碼update user set password=password("123456")where user="root" and host="localhost";12345678
- # 創建用戶grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 通過grant命令修改用戶密碼grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by '123456';# 通過set命令修改用戶密碼set password for 'mazaiting'@'localhost'=password("123456");# 更新系統表mysql.user數據記錄修改用戶密碼update user set password=password("mazaiting")where user='mazaiting' and host='localhost';# 登錄當前用戶,並使用set命令修改密碼set password=password("123456");123456789101112131415
通過DROP USER語句刪除普通用戶
- drop user 'mazaiting'@'localhost';12
刪除系統表mysql.user數據記錄實現刪除用戶賬號
- # 選擇mysql資料庫use mysql;# 刪除用戶delete from user where user='mazaiting' and host='localhost';12345
許可權管理
(1) 對用戶進行授權- # 創建用戶grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 查詢表數據記錄select host,user,password,select_priv,update_priv,grant_priv,drop_privfrom mysql.userwhere user='mazaiting' G12345678910
- show grants for 'mazaiting'@'localhost' G12
- # 回收用戶的查詢許可權revoke select on *.* from 'mazaiting'@'localhost';# 回收用戶的全部許可權revoke all privileges, grant optionfrom 'mazaiting'@'localhost
用戶欄位.png
許可權欄位.png
安全欄位.png
資源控制.png
系統表mysql.user中的所有資源欄位的默認值為0,表示沒有任何限制。
(2) 系統表mysql.db和mysql.host
在系統資料庫mysql中,許可權表除了表user外,還有表db和表host,這兩張表都存儲了某個用戶對資料庫的許可權。
mysql.db表.png
mysql.host表
mysql.host表.png
許可權欄位.png
(3)其他許可權表
在系統資料庫mysql中,除了上述許可權表外,還有表tables_priv和columns_priv,其中標tables_priv用來實現單個表的許可權設置,表columns_priv用來實現單個欄位列的許可權設置。
columns_priv的表結構png
(2) 創建普通用戶賬戶
(3) 利用超級許可權用戶root修改用戶賬戶密碼
(4) 利用擁有超級許可權用戶root修改普通用戶賬戶密碼
(5) 刪除普通用戶賬戶
(2) 查看用戶所擁有許可權
(3) 收回用戶所擁有許可權
2. JAVA向資料庫添加記錄始終顯示「執行SQL命令異常!」
你的sql語句正確么,表中是否有id的主鍵?有的塵爛虛話sql改歷塵成
insert into ttt41411007(列名1,列名2) values('ttt41411007','41411000');
還有就是我記得oracle的sql語句最派燃後需要加上分號 ;
3. 執行sql,輸出異常,caused by:error 42x04
你好,看見你用hibernate了,這個引起的原因很多,可以查看下oracle的session,看是不是事務沒有及時的關閉。除此之外可以從以下幾點查看含明閉下原因:
1、檢查程序,優化資料庫操作及SQL語句,如該關閉的資料庫鏈接要及時關閉、談裂查詢語句該簡化的簡化;
2、檢查網路狀況,排除網路原因槐褲;
3、調整資料庫配置參數,比如:會話超時時間、每秒最大連接數、最大連接數等等;
4、看看資料庫的版本,有沒有升級的可能,也許會解決這個問題;
4. 掃健康碼SQL運行異常怎麼辦
解釋如下。
在程序中,有時候完成一些Transact-SQL會出現錯誤、異常信息。如果我們想自己處理這些異常沖運者信息的話,需要手動捕捉這些信息。那麼我們可以利用trycatch完成。
TRY?CATCH構造包括兩部分:一個TRY塊和一個CATCH塊。如果在TRY塊中所包含Transact-SQL語句中檢測到錯誤條件,控制將散薯被傳遞到CATCH塊(可在此塊中處理該錯誤)。
CATCH塊處理該異常錯誤後,控制將被傳遞到ENDCATCH語句後面的第一個Transact-SQL語句。如果ENDCATCH語句是存儲過程或觸發器中的最後一條語句,控制將返回到調用該存儲過程或觸發器的代碼。將不執行TRY塊中生成錯誤的語句後面的Transact-SQL語句。
如果TRY塊中沒有錯誤,控制將傳遞到關聯的ENDCATCH語句後緊跟的語句。如果ENDCATCH語句是存儲過程或觸發器中的最後一條語句,控制將傳遞到調用該存儲過程或觸發器的語句。
TRY塊以BEGINTRY語句開頭,以ENDTRY語句結尾。在BEGINTRY和ENDTRY語句之間可以指定一個或多個Transact-SQL語句。CATCH塊必須緊跟TRY塊。CATCH塊以BEGINCATCH語句開頭,以ENDCATCH語句結尾。在Transact-SQL中,每個TRY塊僅與悄做一個CATCH塊相關聯。
5. 在運行SQL時出現錯誤,如何解決
一:資料庫引擎沒有啟動:x0dx0a 開始->程序->Microsoft SQL Server 2005->SQL Server 2005外圍應用配置器,在打開的界面單擊"服務的連接的外圍應用配置器",在打開的界面中找到Database Engine,單擊"服務",在右側查看是否已啟動,如果沒有啟動可單擊"啟動",並確保"啟動類型"為自動,不要為手動,否則下次開機時又要手動x0dx0a二:啟動行遠程連接設置沒有打開x0dx0a1.指向「開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外圍應用配置器」 x0dx0a2.在「SQL Server 2005 外圍應用配置器」頁, 單擊「服務和連接的外圍應用配置器」 x0dx0a3.然後單擊展開「資料庫引擎」, 選中「遠程連接」,在右邊選中「本地連接和遠程連接」, x0dx0a再選擇要使用的協議,( 這個地方應當啟用TCP/IP 和命名管道服務!)單擊「應用」,您會看到下消息: 「直到重新啟動資料庫引擎服務後,對連接設置所做的更改才會生效。」,單擊「確定」按鈕返回 x0dx0a4.展開「資料庫引擎」, 選中「服務」,在右邊單擊「停止」,等到 MSSQLSERVER 服務停止, 然後單擊「啟動」,重新啟動MSSQLSERVER 服務。
6. SQL語句執行異常
http://www.cnblogs.com/wdkshy/p/4164804.html
http://jingyan..com/article/5d6edee22daf8799eadeeca2.html
7. 執行transact-sql 語句或批處理時發生異常。
執行transact-sql 語句模鉛洞或批處理時發生異常是設置錯誤造成的,解決方法為:
1、打開HeidiSQL,選擇要操作的伺服器連接,然後點擊【打開】。
8. 系統的一個異常SQL的處理
下面是在awr報告裡面看到的有問題的sql,是9個變數的,在應用前台屬於關聯查詢,在sqlplus裡面手工執行檢查實際執行情況如下:
下面是查詢到的綁定變數值,可以通過查看v$sql_bind_capture視圖來查看變數的實際值,如果時間比較久,可以使用如下的語句查看歷史的綁定變數信息
以下是開啟了autotrace 選項跟蹤的手工執行情況,從執行效率上看是沒有問題的。
從執行計劃和表的數據量等方面判斷如果sql的開銷有問題,應該出現在表SAMS_CHECKINOUT上面,下面檢查該表上面索引的創建語句看是否有問題
下面是在awr報告裡面看到的有問題的sql,是9個變數的,在應用前台屬於關聯查詢,在sqlplus裡面手工執行檢查實際執行情況如下:
下面是查詢到的綁定變數值,可以通過查看v$sql_bind_capture視圖來查看變數的實際值,如果時間比較久,可以使用如下的語句查看歷史的綁定變數信息
以下是開啟了autotrace 選項跟蹤的手工執行情況,從執行效率上看是沒有問題的。
從執行計劃和表的數據量等方面判斷如果sql的開銷有問題,應該出現在表SAMS_CHECKINOUT上面,下面檢查該表上面索引的創建語句看是否有問題
從上圖可以看到,實際測試出來的執行計劃跟awr報告上不同。
現在要對sql做測試
我們通過/*+ gather_plan_statistics */ 收集的相關執行計劃及其統計信息與該SQL的AWR報告中的執行計劃不同,且邏輯讀的數量與AWR報告中的數值也相差巨大。因此,為了更准確的判斷問題,按以下方法測試。
1、SQL在生產庫(SAMS庫的實例 1上,實例名為sams1 )上,在SQLPLUS中執行。
2、執行後,在同一SQLPLUS窗口中,立即執行以下命令:
結果如下:
1、在目錄下創建一個腳本文件,用來獲取更加相信的信息。
2、在SQLPLUS中,執行以下命令:@sql_rpt 3271368959 1 24114 24115 99vaabs5ptktb
4、執行完成後,在該目錄下生成一個HTML文檔,拿到更加詳細的sql統計信息附帶表的數據信息
初步分析如下:
1、該SQL執行一次的邏輯讀為11130塊次,其中第37步的邏輯讀為6127塊次,佔了一半還多。而該步的操作是根據前面的獲取到的ROWID,回表SAMS_CHECKINOUT獲取"SC".「CHECKTIME"[TIMESTAMP,11], "SC"."VERIFYCODE"[CHARACTER,4], "SC"."SN"[NVARCHAR2,40], "SC"."INSYSTIME"[TIMESTAMP,11]四列的內容。
2、第38步對SAMS_ICLOCK表的全表掃描,對整個SQL的邏輯讀也有較大貢獻。但這個不是問題的關鍵
另外索引上有兩個想法:
1、新建組合索引或改造已有索引,按如下順序構建組合索引:
(BADGENUMBER, CHECKTIME, SN, VERIFYCODE, INSYSTIME)
2、在表SAMS_ICLOCK上創建組合索引,列名及順序如下:
(SN, ALIAS)
這兩個索引先暫時不創建,先從其他方面入手
由於在測試過程中,其生成的執行計劃從未與AWR中顯示的執行計劃一致過。所以,這也許是造成不能模擬出2億個塊次邏輯讀的一個原因。因此,把有問題的SQL的執行計劃綁定到的測試SQL上。然後執行該測試SQL,並觀察和分析測試SQL的執行過程和結果來做出進一步的處理。
為完成上述想法,需要用到ORACLE的SQL PROFILE在不改變SQL文本的前提下,改變其執行計劃。操作方法如下:
1、在SQLPLUS中,生成問題SQL的創建SQL PROFILE的腳本。該腳本執行後,會要求分別輸入SQL_ID和PLAN_HASH_VALUE的值。而我們問題SQL的SQL_ID是99vaabs5ptktb,PLAN_HASH_VALUE的值是4243346097。腳本執行完成後,會在運行SQLPLUS的當前目錄中生成一個腳本文件。其名稱在執行腳本過程中的結尾有顯示。為描述方便,簡稱該生成的S腳本文件為「問題SQL腳本」。
2、再次執行該腳本,只不過這次輸入測試SQL的SQL_ID和PLAN_HASH_VALUE。其SQL_ID為3kys9xsdjrm3b,PLAN_HASH_VALUE的值為561269195。為描述方便,簡稱該生成的腳本文件為「測試SQL腳本」
3、在文本編輯工具中分別打開上述兩個腳本,將問題SQL腳本中出現在以下特徵文字之間的文字(不包含特徵文字 )復制並覆蓋掉測試SQL腳本中同樣位置的原文字:
h := SYS.SQLPROF_ATTR(
………
……….
……….
:signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);
4、將測試SQL腳本另存為一個文件(後綴名為.sql)
5、在SQLPLUS中執行第4步另存後的腳本。
6、在SQLPLUS中原封不動的執行原測試SQL。(註:執行前設置SQLPLUS格式,以避免格式混亂。比如 set lines 200 set pagesize 100 )
7、執行 select * from table(dbms_xplan.display_cursor('','','allstats projection last'));
如果正常生成腳本,沒有報錯信息出現在屏幕上,就是生成腳本成功。比如出現下面的提示就是正常的:
9. 程序在執行SQL語句時,若出現系統異常中斷或資料庫突發崩潰,如何保證
備份可用數據後,卸載重裝恢復資料庫。
程序在執行SQL語句時,若出現系統異常中斷或資料庫突發崩潰,先備份可用的數據,包含所有系統資料庫和用戶資料庫的數據文件和日誌文件。
卸載原來的安裝。
系統表查找和刪除所有的MSSQLServer項。
磁碟上刪除安裝SQLSErver產生的所有文件。
重新安裝SQLServer,所需安裝的補丁的版本要求保持與備份系統資料庫時安裝的補丁版本一致。
單用戶模式下恢復master資料庫。
恢復其他系統資料庫。
恢復用戶資料庫。
10. sql調用的目標發生了異常
題主是否想詢問「sql調迅首用的目標發生了異常怎麼辦」?
1、首先,在計劃任務的編輯窗口,找到管理連接。
2、其次,管理創建此計劃任務時的sa連接,將現蔽山在的sa密碼填到密碼框中。
3、最後,刪除計畝並數劃任務就不會彈出這樣的錯誤了。