SQL Server代理(6/12):作業里的工作流——深入作業步驟

来源:http://www.cnblogs.com/woodytu/archive/2016/02/18/5194247.html
-Advertisement-
Play Games

SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。 如我們在這裡系列的前幾篇文章所見,SQL Server代理由一系列的作業步驟組成,每個步驟是將要進行的不同類型的工作。這個作業步驟的每個都是技


SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。


如我們在這裡系列的前幾篇文章所見,SQL Server代理由一系列的作業步驟組成,每個步驟是將要進行的不同類型的工作。這個作業步驟的每個都是技術獨立的,但你可以通過作業步驟作為不同的工作項目,來創建工作流。在這篇文章里,你會學到如何在作業步驟間使用工作流來修改要進行的操作,還有單個作業處理多個條件。你也會進一步檢查作業步驟安全的細節和不同作業子系統。

SQL Server代理作業步驟

SQL Server代理作業,如第2篇所描述的,包含一個或多個作業步驟。每個作業步驟是完全獨立的操作,對於錯誤控制,日誌和工作流都有獨自的邏輯。當作業包含不止一個步驟,通過單個作業的工作流會有新的理解問題。沒有包含作業步驟的作業本身不做任何事情(只有幾個小警告)。

SQL Server代理作業步驟流

為了檢查作業步驟和它們的工作流,在SSMS里創建新的作業。在SQL Server代理下右擊【作業】文件夾,選擇【新建作業】。在【常規】頁面,命名作業名為“作業步驟”。選擇【步驟】頁,然後點擊【新建】按鈕來創建第一個作業步驟。新建作業步驟對話框出現,如圖1所示。

插圖1:新建作業步驟對話框

給作業步驟命名為“步驟1”。 選擇類型,所謂的作業子系統(這裡我們保持預設,T-SQL )。輸入的簡單命令會在master資料庫,例如SELECT * FROM sys.tables。點擊【分析】按鈕驗證下你輸入的語句是否正確,會彈出如插圖2所示的對話框。如果你語句有錯誤,會彈出如插圖3所示的對話框。儘管這個錯誤看起來複雜,真正的錯誤在對話框的底部,語法錯誤。你可以點擊左下腳的第3個按鈕來或獲得額外的技術細節,但這個會給你SQL Server管理對象(SMO).net的錯誤診斷,對你的語法錯誤沒有太多的幫助。

插圖2:T-SQL成功分析

插圖3:T-SQL語句檢測到錯誤

一旦T-SQL分析成功,點擊對話框的【高級】頁,如插圖4所示。

插圖4:作業步驟對話框的【高級】頁。

作業步驟對話框的高級頁是SQL Server代理工作流發生的地方。當作業步驟成功時,你必須選擇應該發生的操作(“成功時要進行的操作”),同樣也有如果作業步驟失敗時要進行的操作。對於作業成功,你有三個選項:

  • 轉到下一步:這是預設的行為。在這個作業步驟里一切正常的話,繼續下一步。如果這個作業是最後一步,退出作業報告步驟的累積結果(如果某個步驟失敗但工作流繼續,還是報告失敗)。
  • 退出報告成功的作業:如果這一步成功,退出作業立即報告它成功完成。例如,如果作業是由SQL Server代理警報執行,修複可能需要多個作業步驟,如果前面的步驟完成,你可以選擇這個選項來退出並報告自動修複完成。
  • 退出報告失敗的作業:如果因為某些原因你要退出作業並報告作業失敗(例如有一個錯誤的測試條件),你可以選擇這個選項。通常應該有類似的作業警報設置為任何必要的後續。
    接下來,你可以選擇作業失敗後重試作業步驟(不報錯誤)。例如,如果你知道一些阻塞可能會導致你的作業步驟失敗,你可以指定步驟嘗試2次,一次一分鐘(重試次數:2,重試間隔(分鐘):1)。

失敗時要執行的操作,和上面所述的成功操作有同樣的選擇,但預設是退出報告失敗作業。
因為這個作業是T-SQL類型,你可以指定一個輸出文件存儲 查詢的結果。你可能還會勾選”將輸出追加到現有文件”,這樣你就不會失去以前的結果,但是你需要創建一個進程定期截斷文件,那樣它就不會消耗你所有的磁碟 空間。或者,你可以將查詢結果保存到資料庫的一個表中。第三個選項,在歷史記錄中包含步驟輸出,將存儲在 msdb.dbo.sysjobhistory(原文說保存在msdb.dbo.sysjobstepslogs,但查看數據表中沒記錄)。忽視“作為以 下用戶運行”選項,我們將會在後面看到。
單擊“確定”,你現在添加一個作業步驟。單擊“確定”,你現在有了一個作業。重新打開“Steps Example”作業(即右鍵點擊作業菜單選擇屬性),瀏覽到作業步驟,點擊新建,添加第二個作業步驟。在這一步中,稱之為“步驟2”,作業類型選擇 “PowerShell”,然後輸入以下PowerShell腳本來看看伺服器操作系統屬性(插圖5)。

1 Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\msdb
2 Get-Item . | Get-Member -Type Properties

插圖5:添加一個PowerShell步驟到作業

這個作業步驟點擊高級頁面並選中“在歷史記錄中包含步驟輸出”,因此你可以看到PowerShell腳本運行和查看結果。單擊確定,然後再次單擊OK,你會看到插圖6。因為作業中步驟1在運行後,退出報告作業成功,那麼步驟2永遠不會運行。

插圖6:警告作業流步驟可能有問題

選擇【否】,導航到第一個作業步驟的高級頁面,更改"成功時要執行的操作"到“轉到下一步”。你可能已經註意到一些事情。第一,你沒有選擇"退出報告成功 的作業"選項-這是怎麼發生的呢?當你創建了第一個作業步驟,然後創建作業,只有一個單一的作業步驟,所以SSMS幫你退出並更改了成功的操作。當你在添 加第二步驟,你需要手動調整業務流。每次增加額外的步驟,都需要返回和編輯作業。
第二件讓你註意的事情是,在這個對話框你也可以直接導航到各個步驟(插圖7)。你不必轉到下一步。你可以想象一個有10步的作業,並根據你的作業步驟的結果,跳到一個不同的步驟。這樣你可以在作業中創建更複雜的工作流程。

插圖7:調整作業步驟1的工作流到下一個作業步驟

點擊【確定】,那麼在作業運行的時候,第二個步驟就會被執行了。
現在,運行作業(SSMS中右鍵單擊作業並選擇【開始作業步驟…】,然後單擊【開始】。一旦工作成功完成後,再次右鍵單擊作業選擇【查看歷史記錄】,你可以在歷史作業步驟中看到輸出結果(插圖8)。

插圖8:在SQL Server代理作業歷史記錄里查看作業步驟歷史

SQL Server代理作業安全

當你創建步驟的類型為PowerShell,你可能已經註意到,作業步驟的常規頁面的"運行身份"選項是可用的,“SQL Server代理服務帳戶”被選。當T-SQL作業連接到SQL Server,它作為SQL Server代理服務的一部分,並將用服務帳戶運行。當其他子系統的運行作業(如PowerShell、操作系統(CmdExec)、ActiveX)他 們實際上在Windowsw創建一個單獨的進程,然後連接到SQL Server或操作系統。這個過程需要有一個安全上下文運行在Windows,你可以在"運行身份"選項選擇安全上下文。在本系列文章的第十篇我們將檢查 代理帳戶,並詳述如何為作業步驟選擇不同的安全上下文。
你可能會問,T-SQL類型步驟的高級選項頁面下的"作為以下用戶運行"。如果一個SQL Server代理作業的所有者是sysadmin伺服器角色的成員,那麼T-SQL作業步驟可以運行在不同的資料庫用戶的上下文,你可以在這裡選擇用戶。 如果作業的所有者不是sysadmin伺服器角色的成員,此選項將不可用,作業步驟在作業的所有者的安全上下文運行。此選項僅可用於T-SQL子系統,代 理帳戶必須用於其他作業子系統。

下篇預告

SQL Server代理作業步驟可以在單一的作業提供複雜的工作流。你可以轉到前面,或跳過作業步驟,或退出作業在成功/失敗時。每個作業步驟相對其他步驟是一種完全不同的作業項目,對作業步驟日誌結果有多種選擇。
現在,你可以創建有趣的作業然後運行,下一步將監視作業正在運行和已運行的歷史記錄。因此,我們下一篇將查看作業活動監視器。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有時,為了讓應用程式運行得更快,所做的全部工作就是在這裡或那裡做一些很小調整。但關鍵在於確定如何進行調整!遲早您會遇到這種情況:應用程式中的 SQL 查詢不能按照您想要的方式進行響應。它要麼不返回數據,要麼耗費的時間長得出奇。如果它降低了企業應用程式的速度,用戶必須等待很長時間。用戶希望應用程式響應
  • 概述 本章節主要介紹配置HaProxy+Keepalived高可用群集,Mycat的配置就不在這裡做介紹,可以參考我前面寫的幾篇關於Mycat的文章。 部署圖: 配置 HaProxy安裝 181和179兩台伺服器安裝haproxy的步驟一致 --創建haproxy用戶 useradd haproxy
  • 最近看到有部分人MongoDB安裝之後總是啟動不起來,在這裡,寫了一個簡單的搭建教程 直接進入正題 1.mongoDB下載地址 https://www.mongodb.org/downloads#production 2.安裝 預設安裝目錄在 C:\Program Files\MongoDB\ 中,
  • Memcached是一個高併發的記憶體鍵值對緩存系統,它的主要作用是將資料庫查詢結果,內容,以及其它一些耗時的計算結果緩存到系統記憶體中,從而加速Web應用程式的響應速度。 Memcached最開始是作為Linux應用程式被安裝在Linux伺服器上來使用的,不過自從開源之後,它又被重新編譯以適用於Win
  • 1、oracel 查看表空間使用情況。 SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name; SELECT a.tablespace...
  • 索引下推整個思路如下: To see how this optimization works, consider first how an index scan proceeds when Index Condition Pushdown is not used: Get the next row,
  • 最近有個需求是要跨庫進行數據同步,兩個資料庫分佈在兩台物理電腦上,自動定期同步可以通過SQL Server代理作業來實現,但是前提是需要編寫一個存儲過程來實現同步邏輯處理。這裡的存儲過程用的不是opendatasource,而是用的鏈接伺服器來實現的。存儲過程創建在IP1:192.168.0.3服
  • 打開配置管理器:開始-> sqlserver2014->配置工具->配置管理器 選擇sqlserver服務,並將右側箭頭的指向右擊設為啟動就OK了
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...