呼叫sp_send_mail時出現Msg 22050和Msg 14661錯誤
環境:SQL Server 9.0.4053
使用域帳號mydomain\hex登入,利用msdb.dbo.sp_send_dbmail傳送郵件,在使用其中的@query引數後就出現錯誤。
USE msdb
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Myprofile',
@recipients = 'MyprofileMail@mydomain.com',
@query = 'select DriveLetter,MB_Free,Status from dbo.DrvSpace',
@subject = 'MYSER55\SQL2005 Last Backup Report',
@attach_query_result_as_file = 1 ;
GO
-------------------------------------------
Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 495
Query execution failed: Msg 15404, Level 16, State 19, Server FIHSER55\SQL2005, Line 1
Could not obtain information about Windows NT group/user 'mydomain\hex', error code 0x5.
Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 495
Query execution failed: Msg 208, Level 16, State 1, Server MYSER55\SQL2005, Line 1
Invalid object name 'dbo.DrvSpace'.
注:
[ @query = ] 'query' 表示要執行的查詢。 查詢結果可以作為檔案附加,或包含在電子郵件的正文中。 查詢的型別為 nvarchar(max),並且可以包含任何有效的 Transact-SQL 語句。
分析:
在進行一般性傳送郵件都正常,而用上@query查詢功能並做為一個附件就會出錯,錯誤資訊顯示不能得到域帳號的資訊。
通用切換SQL Server帳號test登入執行:
USE msdb
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Myprofile',
@recipients = 'MyprofileMail@mydomain.com',
@query = 'select DriveLetter,MB_Free,Status from dbo.DrvSpace',
@subject = 'MYSER55\SQL2005 Last Backup Report',
@attach_query_result_as_file = 1 ;
GO
--------------------------------------------------------------------------------------
Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 495
Query execution failed: Msg 15406, Level 16, State 1, Server MYSER55\SQL2005, Line 1
Cannot execute as the server principal because the principal "test" does not exist, this type of principal cannot be impersonated, or you do not have permission.
是由於沒有伺服器許可權的問題,為什麼還要server principal?
檢視SQL Server服務啟動的帳號為:MYSER55\SQL1,它應該是具有SERVER系統的許可權。
將MYSER55\SQL1帳號加入到msdb資料庫中,並以MYSER55\SQL1做為登入帳號:
USE msdb
EXECUTE AS LOGIN = 'MYSER55\SQL1'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Myprofile',
@recipients = 'MyprofileMail@mydomain.com',
@query = 'select DriveLetter,MB_Free,Status from dbo.DrvSpace',
@subject = 'MYSER55\SQL2005 Last Backup Report',
@attach_query_result_as_file = 1 ;
GO
---------------------------------------------------------------------
mail quene.
郵件傳送成功!
如果使上述郵件傳送成功,需要具有Windows 系統相關的許可權.
驗證Windows使用者和 Windows 組的資訊
EXEC sys.xp_logininfo @acctname = 'MYSER55\SQL1'
------------------------------------------------
Command(s) completed successfully.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9932141/viewspace-664801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL SERVER Msg 7357錯誤解決SQLServer
- msg檔案檢視工具:Msg Viewer Pro for Mac 直裝版ViewMac
- 最新解決msnmsgr.exe-應用程式錯誤 unknown software exceptionException
- SAP CRM中介軟體錯誤IB_CRM_UPLOAD_MSG的解決方法
- iOS objc_msgSend尾呼叫優化機制詳解iOSOBJGse優化
- solidity的msg.valueSolid
- 訊息結構體MSG結構體
- Linux基礎命令---dmsg顯示核心輸出Linux
- 搭建基礎架構-ResultMsg架構
- 規範你的commit msgMIT
- MongoDB:"errmsg" : "DBClientBase::findN: transport error:MongoDBclientError
- Wait Event "PX Deq: Execution Msg"AI
- SQL SERVER Msg 7391解決方法SQLServer
- Android 用adb 列印linux核心除錯資訊dmesg和kmsg命令AndroidLinux除錯
- 深入解構objc_msgSend函式的實現OBJGse函式
- [zt] MSSQL通過link導資料至oracle出錯:Server: Msg 7399, Level 16SQLOracleServer
- 訊息通知 使用 [ Web-msg-sender]Web
- 在 ROS 中使用 Protobuf 替代 ros msgROS
- iOS 理解objc_msgSend的作用iOSOBJGse
- 解決呼叫DBMS_OUTPUT時出現緩衝器溢位的錯誤
- JDBC 連oracle 時出現錯誤,,求助???JDBCOracle
- VCenter克隆虛擬機器報錯msg.snapshot.error-QUIESCINGERROR虛擬機ErrorUI
- ObjC Runtime簡析-- objc_MsgSendOBJGse
- listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }DatabaseAI
- OnWndMsg函式的處理過程函式
- 【Oracle】並行等待之PX Deq: Execution MsgOracle並行
- 微信公眾號開發中圖文訊息推送報錯"{"errcode":48008,"errmsg":"no permission for this msgtype hint: [hDBAwa0376ge20]"}"
- win10系統msg格式如何開啟_win10系統msg的檔案怎麼開啟Win10
- 為什麼objc_msgSend必須用匯編實現OBJGse
- Qt5.3 列印示例時出現錯誤QT
- mysql啟動時報錯Can't read from messagefile errmsg.sysMySql
- GetDlgItem() 出現錯誤Git
- 程式出錯時如何找到錯誤?
- Qt專案移動時出現的錯誤QT
- ant構建時出現錯誤解決方案
- Handler post(Runnable runnable)和sendMessage(Message msg)的區別比較
- ROS 學習踩坑筆記4-在moveit編譯時找不到manipulation_msgsConfig.cmake manipulation_msgs-config.cmake檔案ROS筆記編譯
- 你真的會判斷 _objc_msgForward_stret 嗎OBJForward