疑難排解 Database Mail:疑難排解本機伺服器時,從遠端伺服器傳送郵件
新增: 2006 年 12 月 12 日
此主題描述如何使用遠端伺服器,暫時傳送本機伺服器所產生的電子郵件。當您疑難排解和修復本機伺服器上的 Database Mail 組態時,此程序會很有用。此主題只適用於 Database Mail 傳送的電子郵件。使用 xp_sendmail 或協力廠商公用程式傳送的電子郵件不受影響。
附註: |
---|
在此主題中,本機伺服器是指進行疑難排解的伺服器,而遠端伺服器是指另外一部伺服器,當本機伺服器正在進行疑難排解時,負責傳送本機伺服器的電子郵件。 |
電子郵件一次只能從一部伺服器傳送。當設定遠端伺服器上的 Database Mail 傳送本機伺服器的電子郵件時,遠端伺服器就不能再傳送本身的電子郵件。
當遠端伺服器傳送本機伺服器所產生的電子郵件時,這些電子郵件在 msdb 資料表的所有插入以及任何 Database Mail 記錄錯誤項目都會在本機伺服器上執行。當設定遠端伺服器傳送本機伺服器的電子郵件時,如果本機伺服器恢復傳送電子郵件,任一部伺服器都可以傳送任何電子郵件。如果要知道電子郵件是從哪一部伺服器送出,則必須查看郵件的標頭。
附註: |
---|
若要執行下列程序,本機和遠端伺服器都必須執行 SQL Server 2005 Service Pack 2 或更新版本。 |
程序
設定遠端伺服器傳送本機伺服器的電子郵件
確定遠端伺服器上設定了 Database Mail。如需有關設定 Database Mail 的詳細資訊,請參閱<Database Mail 的如何主題>。
在遠端伺服器上,建立與本機伺服器上每個設定檔相同的設定檔,以用於疑難排解時所產生的電子郵件。每個設定檔都必須有一個有效帳戶,但該帳戶不一定要與本機伺服器上相同設定檔相關聯的帳戶相同。
如果任何 Windows 驗證登入帳戶屬於本機伺服器上的 DatabaseMailUserRole 成員,請確定該帳戶也是遠端伺服器上相同角色的成員,讓該成員得以傳送本機伺服器所產生的電子郵件。
建立名為 DatabaseMail90.exe.config 的文字檔,並輸入下列內容。以本機伺服器的名稱取代
LocalServerName
,DatabaseName
則保留msdb
。<configuration> <appSettings> <add key="DatabaseServerName" value ="LocalServerName" /> <add key="DatabaseName" value ="msdb" /> </appSettings> </configuration>
將檔案儲存在遠端伺服器上的相同資料夾 \MSSQL\Binn 中,檔名為 DatabaseMail90.exe。預設路徑是 < drive >\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn。
若要設定 Database Mail 從其他伺服器傳送電子郵件,請在遠端伺服器上執行下列程式碼。
重要事項: 這段程式碼會在系統資料表中插入記錄。請勿修改程式碼。條件約束會防止記錄插入一次以上。另外,也請勿直接修改這個系統資料表中的資料。 USE msdb; GO INSERT INTO [msdb].[dbo].[sysmail_configuration] ( [paramname] ,[paramvalue] ,[description] ) VALUES ( N'ReadFromConfigurationFile' ,N'1' ,N'Send mail from mail server in configuration file' ); GO
在遠端伺服器上執行
dbo.sysmail_start_sp
,重新啟動 Database Mail。只要USE msdb; GO EXEC dbo.sysmail_start_sp; GO
設定遠端伺服器停止傳送本機伺服器的電子郵件
若要恢復從本機伺服器傳送電子郵件,請在遠端伺服器上執行下列程式碼。這段程式碼會設定遠端伺服器停止傳送本機伺服器所產生的電子郵件,而恢復傳送遠端伺服器本身所產生的電子郵件。
USE msdb; GO EXEC sysmail_configure_sp @parameter_name = N'ReadFromConfigurationFile' ,@parameter_value = N'0'; GO
在遠端伺服器上執行
dbo.sysmail_start_sp
,重新啟動 Database Mail。只要USE msdb; GO EXEC dbo.sysmail_start_sp; GO
在遠端伺服器上切換 Database Mail 的組態
若要切換遠端伺服器傳送其他伺服器所產生的電子郵件,請在 msdb.dbo.sysmail_configuration 中,將
ReadFromConfigurationFile
記錄的parameter_value
設為1
,然後執行 msdb.dbo.sysmail_start_sp。若要切換遠端伺服器傳送本身所產生的電子郵件,請將parameter_value
設為0
,然後執行 msdb.dbo.sysmail_start_sp。USE msdb; GO EXEC sysmail_configure_sp @parameter_name = N'ReadFromConfigurationFile' ,@parameter_value = N'0|1'; GO
若要設定遠端伺服器傳送不同本機伺服器所產生的電子郵件,請將 DatabaseMail90.exe.config 組態檔中的 DatabaseServerName 機碼值變更為該本機伺服器的名稱,然後執行 msdb.dbo.sysmail_start_sp。
權限
dbo.sysmail_start_sp 和 sysmail_configure_sp 的 EXECUTE 權限,dbo.sysmail_configuration 的 INSERT 權限,會預設授與系統管理員 (sysadmin) 固定伺服器角色的成員。
若要在 \MSSQL\Binn 中建立組態檔,必須有 NTFS 權限。
建議執行這些疑難排解程序的登入帳戶為本機和遠端伺服器上的系統管理員 (sysadmin) 固定伺服器角色成員。