使用 SQL Server Agent 排程 SSAS 管理工作
您可以使用 SQL Server Agent 服務來排程 Analysis Services 管理工作,以便按照所需的順序和時間執行工作。排程的工作可協助您自動化定期執行或按照可預測週期執行的程序。 您可以排程管理工作 (例如 Cube 處理) 在商務活動較少的時間執行。 此外,您也可以在 SQL Server Agent 作業內建立作業步驟,決定工作執行的順序。 例如,您可以先處理 Cube,然後再執行 Cube 的備份。
作業步驟可以讓您控制執行的流程。 如果一項作業失敗,您可以設定 SQL Server Agent 繼續執行其餘工作或停止執行。 您也可以設定 SQL Server Agent 傳送有關作業執行成功或失敗的通知。
本主題是一項逐步解說,其中示範了兩種使用 SQL Server Agent 來執行 XMLA 指令碼的方式。 第一則範例會示範如何排程單一維度的處理。 第二則範例會示範如何將處理工作結合成依照排程執行的單一指令碼。 若要完成此逐步解說,您必須符合下列必要條件。
必要條件
您必須安裝 SQL Server Agent 服務。
根據預設,作業會在此服務帳戶底下執行。 在 SQL Server 2012 中,SQL Server Agent 的預設帳戶是 NT Service\SQLAgent$<instancename>。 若要執行備份或處理工作,此帳戶必須是 Analysis Services 執行個體的系統管理員。 如需詳細資訊,請參閱<授與伺服器管理員權限 (Analysis Services)>。
您也應該擁有要使用的測試資料庫。 您可以部署 AdventureWorks 多維度範例資料庫或是要用於此逐步解說之 Analysis Services 多維度教學課程中的專案。 如需詳細資訊,請參閱<安裝 Analysis Services 多維度模型化教學課程的範例資料和專案>。
範例 1:在排程工作中處理維度
這則範例會示範如何建立和排程處理維度的作業。
Analysis Services 排程工作是內嵌至 SQL Server Agent 作業中的 XMLA 指令碼。 這項作業已排程在所要的時間與頻率執行。 由於 SQL Server Agent 是 SQL Server 的一部分,因此,您會同時使用 Database Engine 和 Analysis Services 來建立並排程管理工作。
在 SQL Server Agent 作業中建立處理維度的指令碼
在 SQL Server Management Studio 中,連接到 Analysis Services。 開啟資料庫資料夾並尋找維度。 以滑鼠右鍵按一下維度,然後選取 [處理]。
在 [處理維度] 對話方塊中,於 [物件清單] 下的 [處理選項] 資料行中,確認這個資料行的選項是 [完整處理]。 如果不是,請在 [處理選項] 底下,按一下選項,然後從下拉式清單中選取 [完整處理]。
按一下 [指令碼]。
此步驟會開啟包含處理維度之 XMLA 指令碼的 [XML 查詢] 視窗。
在 [處理維度] 對話方塊中,按一下 [取消] 關閉對話方塊。
在 [XMLA 查詢] 視窗中,反白顯示 XMLA 指令碼、以滑鼠右鍵按一下反白顯示的指令碼,然後選取 [複製]。
此步驟會將 XMLA 指令碼複製到 Windows [剪貼簿]。 您可以將 XMLA 指令碼保留在 [剪貼簿] 中,也可以將它貼入 [記事本] 或其他文字編輯器。 下面是 XMLA 指令碼的範例。
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine"> <Parallel> <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Object> <DatabaseID>Adventure Works DW Multidimensional</DatabaseID> <DimensionID>Dim Account</DimensionID> </Object> <Type>ProcessFull</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process> </Parallel> </Batch>
建立和排程維度處理作業
連接到 Database Engine 的執行個體,然後開啟 [物件總管]。
展開 [SQL Server Agent]。
以滑鼠右鍵按一下 [作業],然後選取 [新增作業]。
在 [新增作業] 對話方塊的 [名稱] 方塊中,輸入作業名稱。
在 [選取頁面] 底下,選取 [步驟],然後按一下 [新增]。
在 [新增作業步驟] 對話方塊的 [步驟名稱] 中,輸入步驟名稱。
在 [伺服器] 中,輸入 localhost (代表 Analysis Services 的預設執行個體) 和 localhost\<instance name> (代表具名執行個體)。
如果您要從遠端電腦執行作業,請使用作業執行所在的伺服器名稱和執行個體名稱。 請使用格式 <server name> (代表預設執行個體) 和 <server name>\<instance name> (代表具名執行個體)。
在 [類型] 中,選取 [SQL Server Analysis Services 命令]。
在 [命令] 中,按一下滑鼠右鍵,然後選取 [貼上]。 您在上一個步驟中產生的 XMLA 指令碼應該就會出現在命令視窗中。
按一下 [確定]。
在 [選取頁面] 底下,按一下 [排程],然後按一下 [新增]。
在 [新增作業排程] 對話方塊的 [名稱] 中,輸入排程名稱,然後按一下 [確定]。
此步驟會建立星期日上午 12:00 的排程。 下一個步驟將為您示範如何手動執行作業。 您也可以指定在監視時執行作業的排程。
在 [新增作業] 對話方塊中,按一下 [確定]。
在 [物件總管] 中,展開 [作業]、以滑鼠右鍵按一下您所建立的作業,然後選取 [從下列步驟啟動作業]。
因為作業只有一個步驟,所以作業將立即執行。 如果作業包含多個步驟,您就可以選取應該啟動作業的步驟。
當作業完成時,請按一下 [關閉]。
範例 2:在排程工作中批次處理維度和資料分割
這則範例中的程序會示範如何建立和排程批次處理 Analysis Services 資料庫維度的作業,同時處理相依於此維度進行彙總的 Cube 資料分割。 如需有關 Analysis Services 物件之批次處理的詳細資訊,請參閱<批次處理 Analysis Services 物件>。
在 SQL Server Agent 作業中建立批次處理維度和資料分割的指令碼
使用相同的資料庫時,展開 [維度]、以滑鼠右鍵按一下 [客戶] 維度,然後選取 [處理]。
在 [處理維度] 對話方塊中,於 [物件清單] 下的 [處理選項] 資料行中,確認這個資料行的選項是 [完整處理]。
按一下 [指令碼]。
此步驟會開啟包含處理維度之 XMLA 指令碼的 [XML 查詢] 視窗。
在 [處理維度] 對話方塊中,按一下 [取消] 關閉對話方塊。
依序展開 [Cube]、[Adventure Works]、[量值群組]、[網際網路銷售] 和 [資料分割]、以滑鼠右鍵按一下清單中的最後一個資料分割,然後選取 [處理]。
在 [處理資料分割] 對話方塊中,於 [物件清單] 下的 [處理選項] 資料行中,確認這個資料行的選項是 [完整處理]。
按一下 [指令碼]。
此步驟會開啟第二個 [XML 查詢] 視窗,其中包含處理資料分割的 XMLA 指令碼。
在 [處理資料分割] 對話方塊中,按一下 [取消] 關閉編輯器。
此時,您必須合併這兩個指令碼,並且確保系統先處理維度。
注意 如果系統先處理資料分割,後續的維度處理就會導致資料分割變成尚未處理。 然後,資料分割需要第二次處理,才能達成已處理狀態。
在包含處理資料分割之 XMLA 指令碼的 [XMLA 查詢] 視窗中,反白顯示 Batch 和 Parallel 標記內部的程式碼、以滑鼠右鍵按一下反白顯示的指令碼,然後選取 [複製]。
<Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Object> <DatabaseID> Adventure Works DW Multidimensional</DatabaseID> <CubeID>Adventure Works</CubeID> <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID> <PartitionID> Internet_Sales_2004</PartitionID> </Object> <Type>ProcessFull</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
開啟包含處理維度之 XMLA 指令碼的 [XMLA 查詢] 視窗。 在 </Process> 標記左邊的指令碼中按一下滑鼠右鍵,然後選取 [貼上]。
下列範例顯示已修訂的 XMLA 指令碼。
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine"> <Parallel> <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Object> <DatabaseID>Adventure Works DW Multidimensional</DatabaseID> <DimensionID>Dim Customer</DimensionID> </Object> <Type>ProcessFull</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process> <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Object> <DatabaseID>Adventure Works DW Multidimensional</DatabaseID> <CubeID>Adventure Works</CubeID> <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID> <PartitionID>Internet_Sales_2004</PartitionID> </Object> <Type>ProcessFull</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process> </Parallel> </Batch>
反白顯示已修訂的 XMLA 指令碼、以滑鼠右鍵按一下反白顯示的指令碼,然後選取 [複製]。
此步驟會將 XMLA 指令碼複製到 Windows [剪貼簿]。 您可以將 XMLA 指令碼保留在 [剪貼簿] 中、將它儲存至檔案,也可以將它貼入 [記事本] 或其他文字編輯器。
建立和排程批次處理作業
連接到 SQL Server 的執行個體,然後開啟 [物件總管]。
展開 [SQL Server Agent]。 如果此服務並未執行,請啟動它。
以滑鼠右鍵按一下 [作業],然後選取 [新增作業]。
在 [新增作業] 對話方塊的 [名稱] 方塊中,輸入作業名稱。
在 [步驟] 中,按一下 [新增]。
在 [新增作業步驟] 對話方塊的 [步驟名稱] 中,輸入步驟名稱。
在 [類型] 中,選取 [SQL Server Analysis Services 命令]。
在 [執行身分] 中,選取 [SQL Server Agent 服務帳戶]。 正如<必要條件>一節所述,此帳戶必須擁有 Analysis Services 的系統管理權限。
在 [伺服器] 中,指定 Analysis Services 執行個體的伺服器名稱。
在 [命令] 中,按一下滑鼠右鍵,然後選取 [貼上]。
按一下 [確定]。
在 [排程] 頁面中,按一下 [新增]。
在 [新增作業排程] 對話方塊的 [名稱] 中,輸入排程名稱,然後按一下 [確定]。
此步驟會建立星期日上午 12:00 的排程。 下一個步驟將為您示範如何手動執行作業。 您也可以選取在監視時執行作業的排程。
按一下 [確定] 關閉對話方塊。
在 [物件總管] 中,展開 [作業]、以滑鼠右鍵按一下您所建立的作業,然後選取 [從下列步驟啟動作業]。
因為作業只有一個步驟,所以作業將立即執行。 如果作業包含多個步驟,您就可以選取應該啟動作業的步驟。
當作業完成時,請按一下 [關閉]。