国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQLSERVER監控復制并使用數據庫郵件功能發告警郵件

2024-07-21 02:50:26
字體:
來源:轉載
供稿:網友
SQLSERVER監控復制并使用數據庫郵件功能發告警郵件SQLSERVER監控復制并使用數據庫郵件功能發告警郵件

最近熬出病來了,都說IT行業傷不起,不說了,說回今天的正題

正題

上個月月底的時候因為要搬遷機房,需要將一個數據信息數據庫先搬到我們的機房,然后將客戶的數據庫

從原來的機房A搬到機房B,原來我們的數據信息庫(DataInfo)是放在機房A的,但是為了以后方便和防止信息泄露

就放到我們的托管機房,這里叫機房C

在搬遷機房的時候,盡量減少宕機時間,數據不能丟,搬遷機房真是一門學問。。。

雖然這麼忙,但我還是把寫文章的時間騰出來,把干貨分享給大家o(∩_∩)o

因為很多系統都在讀寫機房A的數據信息庫(DataInfo),我在上個月底的時候用備份文件初始化的方式搭建好復制把機房A的

機房A的數據信息庫(DataInfo)新插入的數據實時復制到機房C,先讓一部分系統能讀取機房C的數據信息庫(DataInfo)

等以后搬遷完所有系統之后再統一全部改連接地址

當然這篇文章不是講我這次的搬遷過程,在搭建好復制之后,由于我沒有設置訂閱庫的登錄用戶的權限為只讀,導致前幾天開發那邊

同時把新數據插入到訂閱庫,導致復制失敗(主鍵重復),分發命令積壓(大概26w+條命令未分發),然后一大堆后續工作。。。。。。

復制的坑其實挺多的,因為我們不可能24小時用肉眼盯著復制監視器,所以我們需要一些監控手段,

當遇到復制出錯的時候可以盡快知道然后進行修復

監控考慮的條件:

(1)單個點監控、多個點監控

(2)購買、自己開發

(3)比較實時、不是很實時

(4)數據庫服務器是否負載過高

我這里只考慮最簡單的一種:單個點的,不需要很實時,負載不高,如果服務器負載過高有可能連郵件也發不出了

然后就考慮到使用SQLSERVER自帶的數據庫郵件來發告警郵件

當然,如果需要同時滿足實時、多個點監控、成本足夠可以考慮購買成熟的解決方案

例如:微軟的System Center 2012 R2

又或者

自己公司開發監控程序,支持短信告警更加及時


需求

(1)當遇到復制出錯的時候發郵件到我的郵箱

(2)每天間隔一定時間發郵件告訴我當前復制的情況

測試環境:Windows7 64位 、發布庫SQL2005 SP4 、訂閱庫SQL2012 SP1、發布庫和訂閱庫都在我的筆記本上

復制所用登錄用戶:[ReplicationUser]

在進行實驗之前,需要測試一下smtp.163.com,端口為25,這個地址是否可以訪問。如果不通有可能是你機器防火墻的問題

還有可能需要檢查殺毒軟件有沒有屏蔽了端口,否則會發送郵件失敗

呈上完整腳本

--測試復制郵件告警USE [sss]GO--建立測試表  發布表一定要有主鍵CREATE TABLE Repl_Test    (      ID INT IDENTITY(1, 1)             NOT NULL             PRIMARY KEY ,      TestNAME VARCHAR(100) NULL ,      CreatDate DATETIME NULL    )/*********************************************************************/--在發布庫和訂閱庫建立一個同名的登錄用戶,這兩個登錄用戶都對發布庫有訪問權限/*********************************************************************/--設置指定數據庫的復制選項--存儲過程說明http://msdn.microsoft.com/zh-tw/library/ms188769.aspxuse [sss]exec sp_replicationdboption @dbname = N'sss', @optname = N'publish', @value = N'true'GO/*********************************************************************/-- 添加事務發布--存儲過程說明http://www.yesky.com/imagesnew/software/tsql/ts_sp_repl_4s32.htmuse [sss]exec sp_addpublication @publication = N'testpub-sss', @description = N'來自發布服務器“JOE”的數據庫“sss”的事務發布。', @sync_method = N'concurrent', @retention = 0, --訂閱是否過期,0為永不過期@allow_push = N'true', --推送訂閱@allow_pull = N'true',  --請求訂閱為@allow_anonymous = N'false',   --false則表示不允許在該發布上使用匿名訂閱@repl_freq = N'continuous',   --是復制頻率的類型。默認設置為 continuous。如果是 continuous,則表示發布服務器提供所有基于日志的事務輸出。如果是 Snapshot,則表示發布服務器只生成已調度同步事件@status = N'active',   --指定發布數據是否可用@independent_agent = N'true',  --指定是否有用于發布的單獨的分發代理程序@immediate_sync = N'false',   --指定是否每次快照代理程序運行時都創建發布的同步文件@replicate_ddl = 1, --復制DDL語句@allow_initialize_from_backup = N'true' --是否允許備份初始化GO/*********************************************************************/--添加快照代理--存儲過程說明http://www.yesky.com/imagesnew/software/tsql/ts_sp_repl_7ecj.htmexec sp_addpublication_snapshot @publication = N'testpub-sss', @frequency_type = 1, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @job_login = null, @job_passWord = null, @publisher_security_mode = 1/*********************************************************************/-- 添加發布項目--存儲過程說明http://www.yesky.com/imagesnew/software/tsql/ts_sp_repl_27s5.htmuse [sss]exec sp_addarticle @publication = N'testpub-sss', @article = N'Repl_Test', @source_owner = N'dbo', @source_object = N'Repl_Test', --要發布的表@type = N'logbased', @pre_creation_cmd = N'drop', --當應用該項目的快照時,指定系統在訂閱服務器上檢測到同名的現有對象時所應采取的操作@schema_option = 0x000000000803509F, @identityrangemanagementoption = N'manual', --自增列范圍管理選項,manual為手動管理@destination_table = N'Repl_Test',  --是目的(訂閱)表@destination_owner = N'dbo',   @ins_cmd = N'CALL sp_MSins_dboRepl_Test', --是復制項目的插入時使用的復制命令類型@del_cmd = N'CALL sp_MSdel_dboRepl_Test', --是復制項目的刪除時使用的復制命令類型@upd_cmd = N'SCALL sp_MSupd_dboRepl_Test' --是復制項目的更新時使用的復制命令類型GO/*********************************************************************/--完整備份發布庫BACKUP DATABASE [sss] TO DISK ='C:/SSS_FULLBACKUP2014-4-13.BAK' /*********************************************************************/--在訂閱庫上還原數據庫USE [master]RESTORE DATABASE [sss] FROM  DISK = N'D:/sss_fullbackup2014-4-6.bak' WITH  FILE = 1,  MOVE N'sss' TO N'D:/Program Files/Microsoft SQL Server/MSSQL11.SQL2012/MSSQL/DATA/sss.mdf',  MOVE N'sss_log' TO N'D:/Program Files/Microsoft SQL Server/MSSQL11.SQL2012/MSSQL/DATA/sss_log.ldf', NOUNLOAD,  REPLACE,  STATS = 5GO/*********************************************************************/--在發布庫新建訂閱 使用推送訂閱use [sss]exec sp_addsubscription @publication = N'testpub-sss', @subscriber = N'JOE/SQL2012', @destination_db = N'sss', @subscription_type = N'Push', @sync_type = N'initialize with backup',@article = N'all', @update_mode = N'read only', @subscriber_type = 0,@backupdevicetype='disk',@backupdevicename='C:/SSS_FULLBACKUP2014-4-13.bak'--最后一次備份的備份文件(發布服務器上的存放位置)/*********************************************************************/--添加分發代理exec sp_addpushsubscription_agent @publication = N'testpub-sss', @subscriber = N'JOE/SQL2012', @subscriber_db = N'sss', @job_login = null, @job_password = null, @subscriber_security_mode = 0, @subscriber_login = N'ReplicationUser', @subscriber_password = N'ReplicationForUser', @frequency_type = 64, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0,@frequency_subday_interval = 0,@active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 20140408, @active_end_date = 99991231, @enabled_for_syncmgr = N'False', @dts_package_location = N'Distributor'GO/*********************************************************************/--腳本創建數據庫郵件--開啟數據庫郵件EXEC sp_configure 'show advanced options',1RECONFIGURE WITH OVERRIDEGOEXEC sp_configure 'database mail xps',1RECONFIGURE WITH OVERRIDE/*********************************************************************/--創建郵件帳戶信息EXEC  msdb..sysmail_add_account_sp      @ACCOUNT_NAME ='ReplicationErrorMailLog',--郵件帳戶名稱      @EMAIL_ADDRESS ='hiAT163.com',--發件人郵件地址      @DISPLAY_NAME ='系統管理員',--發件人姓名      @REPLYTO_ADDRESS =NULL,      @DESCRIPTION = NULL,      @MAILSERVER_NAME = 'SMTP.163.COM',--郵件服務器地址      @MAILSERVER_TYPE = 'SMTP',--郵件協議      @PORT =25,--郵件服務器端口      @USERNAME = 'hiAT163.com',--用戶名      @PASSWORD = 'xxx',--密碼      @USE_DEFAULT_CREDENTIALS =0,      @ENABLE_SSL =0,      @ACCOUNT_ID = NULLGO/*********************************************************************/--數據庫配置文件IF EXISTS(SELECT name FROM msdb..sysmail_profile WHERE name=N'ReplicationErrorProfileLog')BEGIN    EXEC msdb..sysmail_delete_profile_sp    @profile_name='ReplicationErrorProfileLog'ENDEXEC msdb..sysmail_add_profile_sp    @profile_name = 'ReplicationErrorProfileLog',--profile名稱    @description = '數據庫郵件配置文件',--profile描述    @profile_id = nullGO/*********************************************************************/--用戶和郵件配置文件相關聯EXEC msdb..sysmail_add_profileaccount_sp    @profile_name = 'ReplicationErrorProfileLog',--profile名稱    @account_name = 'ReplicationErrorMailLog',--account名稱    @sequence_number = 1--account 在profile 中順序GO/*********************************************************************/--發送簡單文本的郵件/*********************************************************************/--創建鏈接服務器--要開啟分發服務器上的Distributed Transaction Coordinator(MSDTC服務)USE [master]GOEXEC master.dbo.sp_addlinkedserver @server = N'JOE_DI
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泾阳县| 蒙山县| 策勒县| 柳河县| 平安县| 边坝县| 阳春市| 宁乡县| 双峰县| 思茅市| 明溪县| 额尔古纳市| 万安县| 合作市| 江源县| 射洪县| 嘉义市| 宜阳县| 韶山市| 宝清县| 梨树县| 当雄县| 南投市| 汝城县| 晋江市| 辽阳市| 会同县| 西畴县| 宁海县| 乐业县| 瓦房店市| 甘洛县| 苏州市| 察哈| 曲沃县| 达拉特旗| 塘沽区| 兴文县| 怀仁县| 龙门县| 东乡|