專利名稱:數(shù)據(jù)層應(yīng)用程序組件的制作方法
數(shù)據(jù)層應(yīng)用程序組件背景在應(yīng)用程序的生命周期——包括應(yīng)用程序的創(chuàng)作、安裝,以及運(yùn)行時——內(nèi),通常創(chuàng)建許多不同的對象,或以其他方式將它們與應(yīng)用程序相關(guān)聯(lián)。例如,可以將編程代碼、可執(zhí)行代碼、軟件資源,以及硬件資源與應(yīng)用程序相關(guān)聯(lián),并可以為每一個項(xiàng)指派各種文件名和文件類型。除與編程代碼、可執(zhí)行代碼、以及資源相關(guān)聯(lián)之外,數(shù)據(jù)庫應(yīng)用程序可以變得與諸如登錄、表、存儲過程,以及數(shù)據(jù)庫策略之類的附加對象相關(guān)聯(lián)。在有許多對象要跟蹤和維護(hù)的情況下,數(shù)據(jù)庫管理員在數(shù)據(jù)庫應(yīng)用程序的生命周期內(nèi)有效地管理與數(shù)據(jù)庫應(yīng)用程序相關(guān)聯(lián)的所有項(xiàng)常常是困難的,并且是費(fèi)時的。例如, 當(dāng)數(shù)據(jù)庫管理員希望對數(shù)據(jù)庫應(yīng)用程序所使用的硬件或其他項(xiàng)目作出改變或者添加或改變其中安裝了數(shù)據(jù)庫應(yīng)用程序的數(shù)據(jù)庫服務(wù)器實(shí)例時,作出所希望的改變的過程會是費(fèi)時的,且昂貴的。對象可以被編碼或以其他方式直接地鏈接到它們所駐留的硬件資源或它們在其上面操作的硬件資源,且將這樣的對象移動到其他位置可能涉及顯著的重新編程。在應(yīng)用程序?qū)ο蟠鎯υ诙鄠€位置的情況下或當(dāng)單個數(shù)據(jù)庫存儲由多個應(yīng)用程序使用的對象時,移動對象或創(chuàng)建附加安裝所涉及的工作量增大。概述為了在數(shù)據(jù)庫應(yīng)用程序的生命周期階段期間實(shí)現(xiàn)高管理效率,具有將構(gòu)成數(shù)據(jù)庫應(yīng)用程序或由數(shù)據(jù)庫應(yīng)用程序所使用的項(xiàng)進(jìn)行關(guān)聯(lián)的編組抽象是有益的。在沒有軟件編組抽象的情況下,很難標(biāo)識、概念化、移動或再現(xiàn)、或者以其他方式管理數(shù)據(jù)庫應(yīng)用程序。此處所公開的實(shí)施例將同數(shù)據(jù)庫對象的元數(shù)據(jù)相關(guān)聯(lián)的容器中的數(shù)據(jù)庫應(yīng)用程序的元素進(jìn)行關(guān)聯(lián),這允許數(shù)據(jù)庫應(yīng)用程序例如被移動或作為整體再現(xiàn)。容器將運(yùn)行時資源標(biāo)識符與數(shù)據(jù)庫元素相關(guān)聯(lián),這些標(biāo)識符允許改變硬件或其他運(yùn)行時資源或者選擇數(shù)據(jù)庫應(yīng)用程序的元素以使用不同的資源,而無需重新編碼元素。另外,多個數(shù)據(jù)庫應(yīng)用程序容器可以與單個編組或結(jié)構(gòu)相關(guān)聯(lián),該單個編組或結(jié)構(gòu)允許數(shù)據(jù)庫應(yīng)用程序容器被移動、再現(xiàn),或以其他方式作為整體被管理。結(jié)構(gòu)引用數(shù)據(jù)庫應(yīng)用程序的元素所使用的資源標(biāo)識符,以允許管理多個數(shù)據(jù)庫應(yīng)用程序。根據(jù)一特定實(shí)施例,計(jì)算機(jī)可讀介質(zhì)存儲包括數(shù)據(jù)層應(yīng)用程序組件(DAC),該數(shù)據(jù)層應(yīng)用程序組件包括打包與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)的單個管理單元。與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)包括數(shù)據(jù)庫對象的標(biāo)識符,可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。提供本概述是為了以精簡的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。附圖簡述
圖1是示出了使用數(shù)據(jù)層應(yīng)用程序組件(DAC)的數(shù)據(jù)庫開發(fā)工具的框圖;圖2是示出了使用DAC和DAC包來安裝DAC實(shí)例的方法的流程圖;圖3是示出了 DAC的特定實(shí)施例的一般示圖4是示出了具有相關(guān)聯(lián)的DAC名稱的DAC的第二實(shí)施例的框圖;圖5是示出了包括一組DAC的服務(wù)器結(jié)構(gòu)(server fabric)的特定實(shí)施例的框圖;圖6是示出了包括一組DAC的服務(wù)器結(jié)構(gòu)的第二實(shí)施例的框圖;圖7是示出了在服務(wù)器結(jié)構(gòu)的實(shí)體應(yīng)用數(shù)據(jù)庫管理動作和策略的方法的流程圖;圖8是示出了服務(wù)器結(jié)構(gòu)的實(shí)體關(guān)系的流程圖;圖9是管理數(shù)據(jù)庫應(yīng)用程序的系統(tǒng)的實(shí)施例的框圖;圖10是示出了處理服務(wù)器結(jié)構(gòu)元素的方法的流程圖;圖11是示出了用于管理SQL實(shí)例的系統(tǒng)的第一特定實(shí)施例的框圖;圖12是示出了用于管理SQL實(shí)例的系統(tǒng)的第二特定實(shí)施例的框圖;圖13是示出了用于管理SQL實(shí)例的系統(tǒng)的第三特定實(shí)施例的框圖;圖14是示出了用于管理SQL實(shí)例的系統(tǒng)的第四特定實(shí)施例的框圖;圖15是示出了用于管理SQL實(shí)例的系統(tǒng)的第五特定實(shí)施例的框圖;以及圖16是示出了用于管理SQL實(shí)例的系統(tǒng)的第六特定實(shí)施例的框圖。詳細(xì)描述特定實(shí)施例描述了標(biāo)識數(shù)據(jù)庫應(yīng)用程序的元素并為數(shù)據(jù)庫應(yīng)用程序提供單個管理單元的數(shù)據(jù)層應(yīng)用程序組件(DAC)的使用。由DAC所標(biāo)識的數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)庫對象標(biāo)識符和/或數(shù)據(jù)庫對象的元數(shù)據(jù)相關(guān)聯(lián),通過數(shù)據(jù)庫對象可以操縱數(shù)據(jù)庫應(yīng)用程序。 另外,數(shù)據(jù)庫運(yùn)行時標(biāo)識符與數(shù)據(jù)庫應(yīng)用程序的元素所使用的運(yùn)行時資源中的一個或多個相關(guān)聯(lián)。與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的一個或多個策略還通過DAC來標(biāo)識。結(jié)果,DAC 可以通過數(shù)據(jù)庫對象標(biāo)識符來引用,以改變、移動或復(fù)制數(shù)據(jù)庫應(yīng)用程序。類似地,可以改變運(yùn)行時資源,或者,可以通過改變與相應(yīng)的元素相關(guān)聯(lián)的數(shù)據(jù)庫運(yùn)行時標(biāo)識符來復(fù)制數(shù)據(jù)庫應(yīng)用程序。結(jié)果,數(shù)據(jù)庫管理員能夠?qū)W⒂诠芾頂?shù)據(jù)庫應(yīng)用程序的內(nèi)容,而不是將時間和注意力投入于管理數(shù)據(jù)庫應(yīng)用程序的實(shí)例的組織方面。在一特定實(shí)施例中,公開了可以實(shí)現(xiàn)為計(jì)算機(jī)可讀介質(zhì)的數(shù)據(jù)層應(yīng)用程序組件 (DAC)。DAC包括打包與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)的單個管理單元。與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)包括數(shù)據(jù)庫對象的標(biāo)識符。元數(shù)據(jù)還包括可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符。元數(shù)據(jù)還包括與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。另外,應(yīng)該理解,上文所描述的單個管理單元可包括多個數(shù)據(jù)庫對象的元數(shù)據(jù),多個運(yùn)行時資源,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的多個策略。此外,數(shù)據(jù)庫對象的元數(shù)據(jù)可包括數(shù)據(jù)庫對象標(biāo)識符、數(shù)據(jù)庫對象的模式(例如,表的列模式、存儲過程的正文和/或函數(shù)),與數(shù)據(jù)庫對象有關(guān)的許可,和/或可以被用來創(chuàng)建或更改數(shù)據(jù)庫服務(wù)器中的對象和/或推斷數(shù)據(jù)庫對象的其他元數(shù)據(jù)條目。在另一特定實(shí)施例中,公開了用于將數(shù)據(jù)庫元素與一組支持計(jì)算機(jī)資源相關(guān)聯(lián)的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)。該系統(tǒng)包括數(shù)據(jù)層應(yīng)用程序組件(DAC),該組件包括數(shù)據(jù)庫元素集合, 其中包括與一個或多個數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)。數(shù)據(jù)庫元素的集合還包括可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。DAC具有與數(shù)據(jù)庫元素的集合相關(guān)聯(lián)的DAC名稱。DAC名稱可被訪問以供數(shù)據(jù)庫應(yīng)用程序使用。數(shù)據(jù)庫元素的集合以編程方式與一組用戶可選擇支持計(jì)算機(jī)資源相關(guān)聯(lián)。在一特定實(shí)施例中,支持計(jì)算機(jī)資源可以被改變,而DAC名稱保持不變。在另一特定實(shí)施例中,公開了部署數(shù)據(jù)層應(yīng)用程序組件(DAC)的方法。該方法包括創(chuàng)建DAC模型。DAC模型包括數(shù)據(jù)庫元素集合,其中包括與一個或多個數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)。與一個或多個數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)包括每一個數(shù)據(jù)庫對象的標(biāo)識符,可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。該方法包括基于DAC模型構(gòu)建DAC包,以及將DAC類型從DAC包導(dǎo)入到服務(wù)器結(jié)構(gòu)。該方法還包括部署DAC類型,以創(chuàng)建部署的DAC實(shí)例。所公開的主題包括將構(gòu)成數(shù)據(jù)庫應(yīng)用程序的項(xiàng)進(jìn)行關(guān)聯(lián)的軟件編組抽象。軟件編組抽象實(shí)現(xiàn)對數(shù)據(jù)庫應(yīng)用程序的標(biāo)識、概念化、和管理。本發(fā)明包括有效地建模與數(shù)據(jù)庫應(yīng)用程序相關(guān)聯(lián)的數(shù)據(jù)庫對象、策略,以及運(yùn)行時資源的叫做數(shù)據(jù)層應(yīng)用程序組件(DAC)的抽象。DAC形成單個管理單元用于應(yīng)用程序的完整生命周期,包括版本控制 (versioning)。例如,可以開發(fā)人力資源(HR)DAC以及它所支持的HR應(yīng)用程序代碼。隨著HR應(yīng)用程序可執(zhí)行程序被部署到應(yīng)用程序服務(wù)器,HR DAC被部署到Microsoft SQL krver (Microsoft (微軟)SQL服務(wù)器)的實(shí)例。然后,可以監(jiān)視和管理HR DAC0例如,當(dāng)HR DAC上的預(yù)測負(fù)載可能導(dǎo)致HR DAC超出其上維護(hù)有HR DAC的當(dāng)前服務(wù)器的容量時,可以將 HR DAC移動到新服務(wù)器。該移動可以這樣來實(shí)現(xiàn)通過按照與DAC相關(guān)聯(lián)的數(shù)據(jù)庫對象標(biāo)識符來引用數(shù)據(jù)庫應(yīng)用程序,并通過改變與數(shù)據(jù)庫元素相關(guān)聯(lián)的數(shù)據(jù)庫運(yùn)行時標(biāo)識符來引用新服務(wù)器的運(yùn)行時資源。一般而言,DAC可以橫跨多種類型的數(shù)據(jù)庫運(yùn)行時環(huán)境,和/或
WW Microsoft SQL Server is^fW^F^, 1 Microsoft SQL Server^ Microsoft SQL Server數(shù)據(jù)庫、Microsoft SQL Server數(shù)據(jù)庫引擎、Microsoft SQL Server分析服務(wù)、 Microsoft SQL krver報(bào)告服務(wù),以及不同廠商和類型的數(shù)據(jù)庫服務(wù)器和/或數(shù)據(jù)庫的實(shí)例。另外,本發(fā)明可以提供作為整體管理數(shù)據(jù)庫服務(wù)器和/或Microsoft SQL Server 環(huán)境的好處,從而允許更專注于管理DAC,而不太專注于管理個體計(jì)算機(jī)、數(shù)據(jù)庫實(shí)例和數(shù)據(jù)庫。本發(fā)明通過“服務(wù)器結(jié)構(gòu)”的概念(也被稱為“服務(wù)器結(jié)構(gòu)”)來解決此問題,該概念建模組織的DAC、MicrOSOft SQL krver運(yùn)行時、以及硬件資源中的全部。服務(wù)器結(jié)構(gòu)提供 DAC、運(yùn)行時,以及資源層中的實(shí)體和容器的統(tǒng)一視圖,并實(shí)現(xiàn)實(shí)體之間的更動態(tài)的映射。服務(wù)器結(jié)構(gòu)還包括用于聲明和啟動管理動作的中央管理點(diǎn),中央策略管理員,以及包含用于諸如影響、假設(shè)分析或部署分析之類的分析的模型和數(shù)據(jù)的中央推理點(diǎn)。這些聲明性的、模型驅(qū)動的特征允許數(shù)據(jù)庫管理員和開發(fā)者定義實(shí)施組織規(guī)則的全局管理動作,確保DAC被部署在具有DAC所需的所有特征的運(yùn)行時上,并允許服務(wù)器結(jié)構(gòu)中的實(shí)體在最小的手動干預(yù)下對環(huán)境變化作出響應(yīng)。由關(guān)于服務(wù)器結(jié)構(gòu)中的實(shí)體的狀態(tài)的更多知識驅(qū)動的這些自管理功能,是使開發(fā)、部署,以及管理數(shù)據(jù)層應(yīng)用程序組件對于數(shù)據(jù)庫管理員和開發(fā)者來說更加容易所需要的。本發(fā)明可以允許數(shù)據(jù)庫管理員和開發(fā)者在他們的應(yīng)用程序的生命周期內(nèi)管理他們的應(yīng)用程序時更有成果,給予他們更多時間來將附加數(shù)據(jù)和存儲平臺技術(shù)結(jié)合到他們的系統(tǒng)中。本發(fā)明將注意力移向數(shù)據(jù)庫應(yīng)用程序并從對Microsoft SQL krver實(shí)例和計(jì)算機(jī)的常規(guī)焦點(diǎn)移開。DAC是位于數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫容器的實(shí)例上方的新的較高級別的抽象。DAC包括為傳統(tǒng)的三層應(yīng)用程序形成數(shù)據(jù)層支持的數(shù)據(jù)庫實(shí)體組。在現(xiàn)代系統(tǒng)中,數(shù)據(jù)庫應(yīng)用程序常常橫跨多個數(shù)據(jù)庫,并且系統(tǒng)級別的應(yīng)用程序信息被存儲在諸如 “master (主)”和“msdb. ”之類的系統(tǒng)數(shù)據(jù)庫中。更具體而言,本發(fā)明在叫做DAC的容器中建模數(shù)據(jù)庫應(yīng)用程序。DAC是將數(shù)據(jù)庫應(yīng)用程序偽像、相關(guān)聯(lián)的策略,以及應(yīng)用程序的被引用的運(yùn)行時資源中的全部拉到一起的邏輯表示法。每一個DAC都充當(dāng)單個管理單元??梢詫AC應(yīng)用策略,且DAC可以作為整體移動。策略可以被用來表明所需或首選的結(jié)果或考慮的開發(fā)者或部署意圖。例如,開發(fā)者可以通過指定DAC只能部署在64比特運(yùn)行時上的策略來聲明所需的意圖。服務(wù)器結(jié)構(gòu)建模一組DAC,并將它們映射到低層Microsoft SQL krver運(yùn)行時 (諸如實(shí)例或矩陣)和運(yùn)行時所使用的硬件資源。服務(wù)器結(jié)構(gòu)提供一組DAC運(yùn)轉(zhuǎn)所需的所有運(yùn)行時和硬件資源的模型。服務(wù)器結(jié)構(gòu)還提供集中式管理特征,這些特征簡化在使用其他技術(shù)的情況下非常復(fù)雜的動作。例如,每一個DAC都具有由服務(wù)器結(jié)構(gòu)管理的一個或多個已知名稱(“端點(diǎn)名稱”)。端點(diǎn)名稱獨(dú)立于DAC所使用的硬件資源或?qū)嵗?。結(jié)果,應(yīng)用程序使用端點(diǎn)名稱而并非計(jì)算機(jī)和實(shí)例名稱來連接,因此,可以在實(shí)例之間移動DAC,而不要求應(yīng)用程序變化。將所有可用的DAC、運(yùn)行時,以及資源的模型與服務(wù)器結(jié)構(gòu)內(nèi)的集中式管理和推理功能相組合實(shí)現(xiàn)若干情景。例如,可以監(jiān)視服務(wù)器結(jié)構(gòu)中的所有DAC的資源使用。作為另一個示例,中央推理引擎可以對照分配給它們的宿主運(yùn)行時的資源來預(yù)測DAC的未來工作負(fù)荷。作為另一個示例,可以響應(yīng)預(yù)測的資源不足,采取動作。例如,系統(tǒng)可以動態(tài)地管轄對運(yùn)行時可用的資源,并發(fā)現(xiàn)帶有多余容量的運(yùn)行時,并且以不影響應(yīng)用程序連接的方式將DAC移動到該運(yùn)行時。描述一組工具和功能,用于在服務(wù)器結(jié)構(gòu)中在DAC的生命周期中 (開發(fā)、部署,以及管理)管理DAC。在一特定實(shí)施例中,DAC是打包數(shù)據(jù)庫對象的元數(shù)據(jù)、可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略的單個管理單元。如圖1所示,取決于DAC在生命周期中的狀態(tài),可以將不同的動作應(yīng)用于 DAC。例如,參考圖1,用戶100(例如,開發(fā)者)可以創(chuàng)建DAC模型102。DAC模型102包括數(shù)據(jù)層應(yīng)用程序組件(DAC) 104。DAC 104可以被包括在DAC容器106中。DAC 104包括數(shù)據(jù)庫元素集合。如圖1所示,DAC 104包括第一元素108、第二元素110,以及第三元素112。 第一元素108可包括數(shù)據(jù)庫對象的元數(shù)據(jù),其中包括數(shù)據(jù)庫對象標(biāo)識符。第二元素110可包括可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源。第三元素112可包括與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。在DAC模型102中表示的數(shù)據(jù)庫應(yīng)用程序的開發(fā)期間,用戶100可以創(chuàng)建、編輯,以及驗(yàn)證DAC模型102,并將DAC模型102的表示保存為DAC項(xiàng)目114。DAC 項(xiàng)目114可包括一個或多個文件118。然后,當(dāng)數(shù)據(jù)庫應(yīng)用程序處于開發(fā)過程中時,可以將 DAC項(xiàng)目114檢入(check into)并檢出(檢出)源控制系統(tǒng)或源控制數(shù)據(jù)庫116。一旦用戶100(例如,開發(fā)者)已完成了 DAC模型102中表示的數(shù)據(jù)庫應(yīng)用程序的開發(fā),基于DAC模型102,DAC模型102被編譯或內(nèi)置到完整的DAC包120中。可以將DAC 包120作為DAC類型122導(dǎo)入到服務(wù)器結(jié)構(gòu)中(例如,服務(wù)器結(jié)構(gòu)126),該DAC類型122表
7示可以根據(jù)需要再現(xiàn)和部署的DAC模型102的概念化版本??梢圆渴餌AC類型122,以創(chuàng)建部署的DAC實(shí)例124,該部署的DAC實(shí)例IM表示作為DAC模型102開發(fā)的數(shù)據(jù)庫應(yīng)用程序的操作安裝。因此,通過開發(fā)DAC模型102,開發(fā)者已經(jīng)創(chuàng)建了可移植數(shù)據(jù)庫應(yīng)用程序,該可移植數(shù)據(jù)庫應(yīng)用程序可在無需重新編碼數(shù)據(jù)庫應(yīng)用程序的情況下被復(fù)制。開發(fā)者也可以在部署DAC實(shí)例124之前配置DAC類型122。此外,DAC實(shí)例IM可以關(guān)于物理計(jì)算資源的特定組來安裝。參考圖2,示出了部署數(shù)據(jù)層應(yīng)用程序組件的特定方法的流程圖。方法在202包括創(chuàng)建包含數(shù)據(jù)庫元素集合的DAC模型,包括一個或多個數(shù)據(jù)庫對象的元數(shù)據(jù)。DAC模型還包括可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符。DAC模型還包括與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。在一特定實(shí)施例中,在204,該方法包括作為 DAC項(xiàng)目保存DAC模型的表示,并且任選地將DAC項(xiàng)目檢入源控制系統(tǒng)或源控制數(shù)據(jù)庫,以存儲DAC項(xiàng)目。在另一特定實(shí)施例中,在206,該方法包括在構(gòu)建DAC包之前,編輯DAC模型并驗(yàn)證DAC模型,在部署DAC實(shí)例之前配置DAC類型,以及關(guān)于物理計(jì)算資源的特定組安裝DAC實(shí)例。移動到208,該方法包括基于DAC模型來構(gòu)建DAC包。移動到210,該方法將 DAC類型從DAC包導(dǎo)入到服務(wù)器結(jié)構(gòu)。移動到212,該方法包括部署DAC類型,以創(chuàng)建部署的DAC實(shí)例。應(yīng)該強(qiáng)調(diào)的是,DAC在服務(wù)器結(jié)構(gòu)中具有在DAC類型和DAC實(shí)例之間的兩個主要分段。當(dāng)將DAC導(dǎo)入到服務(wù)器結(jié)構(gòu)時,構(gòu)建DAC類型。DAC類型定義DAC中的對象的邏輯實(shí)現(xiàn), 諸如表和多維數(shù)據(jù)集(cube),并包括定義開發(fā)者希望DAC如何被使用的策略。當(dāng)將DAC類型部署到服務(wù)器結(jié)構(gòu)中的一個或多個數(shù)據(jù)庫服務(wù)器運(yùn)行時(例如,Microsoft SQL Server 運(yùn)行時)時,構(gòu)建DAC實(shí)例。DAC實(shí)例記錄DAC類型中的實(shí)體如何映射到服務(wù)器運(yùn)行時層中的他們的宿主。DAC實(shí)例包括定義管理員希望DAC如何在服務(wù)器結(jié)構(gòu)中操作的策略。參考圖3,示出了數(shù)據(jù)層應(yīng)用程序組件(DAC)的內(nèi)容的高層視圖。此圖示出了開發(fā)者意圖(DAC類型)與部署意圖(DAC實(shí)例)的概念分隔。如圖3所示,可以在概念上將DAC 分成DAC類型304和DAC實(shí)例306。DAC類型304包含結(jié)構(gòu)、邏輯、策略,及包括DAC定義的其他實(shí)體。DAC類型304還提供供開發(fā)者在形式上定義DAC 302的不變量、要求,以及預(yù)期使用和解釋的機(jī)制。包括DAC類型304的實(shí)體旨在作為一個單元來管理。信息對于DAC 302的特定版本的所有部署而言是全局的。如此,DAC類型304可以表達(dá)開發(fā)者意圖、可以被版本化,并可以對于特定版本而言不可改變,并具有保證是唯一的標(biāo)識符。DAC類型304 的三個主要部分是,用于組織目的,被標(biāo)示為屬性308、應(yīng)用程序模式310,以及開發(fā)者意圖和策略312。DAC類型304的屬性308是DAC類型304所特有的特征或?qū)傩?。例如,屬?08可包括人類可讀名稱和描述。作為再一個示例,屬性308可包括諸如主要和次要版本號之類的一個或多個版本標(biāo)識符。作為再一個示例,屬性308可包括被保證為DAC類型304所特有的標(biāo)識符。作為再一個示例,屬性308可包括已知端點(diǎn)名稱。作為再一個示例,屬性308 可包括對其他DAC類型的依賴。DAC類型304的應(yīng)用程序模式310定義包括DAC 302的Microsoft SQL Server對象。DAC類型304的此部分中的對象定義是DAC 302所固有的,且任何更改都可以生成DAC 類型的新版本。應(yīng)用程序模式310基本上定義DAC 302包括“什么”。例如,應(yīng)用程序模式310可包括諸如表、多維數(shù)據(jù)集,以及數(shù)據(jù)挖掘模型之類的應(yīng)用程序結(jié)構(gòu)。作為再一個示例, 應(yīng)用程序模式310可包括諸如存儲過程、用戶定義函數(shù),以及觸發(fā)器之類的應(yīng)用程序邏輯。 作為再一個示例,應(yīng)用程序模式310可包括被視為應(yīng)用程序定義的一部分的引用數(shù)據(jù)。例如,可以引用諸如郵區(qū)編碼和其他郵政編碼、或州和省代碼之類的查找數(shù)據(jù)。DAC類型304的開發(fā)者意圖和策略312提供關(guān)于DAC 302旨在如何被使用或解釋的附加信息。例如,開發(fā)者意圖和策略312可包括部署DAC 302所需要的服務(wù)器結(jié)構(gòu)資源要求。例如,DAC 302可能要求Microsoft SQL Server 2008,從而實(shí)現(xiàn)對空間數(shù)據(jù)類型和 CLR集成、以及80GB的磁盤空間的支持。作為再一個示例,開發(fā)者意圖和策略312可包括定義被內(nèi)置到DAC 302中的可置配性的配置意圖(參數(shù)化)。這可以允許不影響DAC版本的部署-特定配置,其包括在部署時可以或必須提供的信息。例如,配置參數(shù)可以指示,部署過程必須提供到諸如Microsoft SQL krver的文件組和實(shí)例的名稱之類的特定類型的服務(wù)器結(jié)構(gòu)資源的映射。作為再一個示例,開發(fā)者意圖和策略312可包括指定DAC 302的哪個部分向外部暴露的接口定義。這實(shí)現(xiàn)公共接口與DAC 302內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)的分離。例如, 接口定義將指定哪些實(shí)體可以被客戶端應(yīng)用程序或另一 DAC引用。作為再一個示例,開發(fā)者意圖和策略312可包括諸如針對此DAC 302執(zhí)行的查詢之類的工作負(fù)荷配置概況信息。開發(fā)者意圖和策略的示例可包括部署DAC所需要的服務(wù)器結(jié)構(gòu)資源要求。例如, DAC可能要求Microsoft SQL Server 2008,從而實(shí)現(xiàn)對空間數(shù)據(jù)類型和CLR集成、以及 80GB的磁盤空間的支持。開發(fā)者意圖和策略的另一示例包括定義被內(nèi)置到DAC中的可置配性的配置意圖(參數(shù)化)。這可以允許不影響DAC版本的部署-特定配置,包括在部署時可以或必須提供的信息。例如,配置參數(shù)可以指示,部署過程必須提供到諸如Microsoft SQL Server的文件組和實(shí)例的名稱之類的特定類型的服務(wù)器結(jié)構(gòu)資源的映射。開發(fā)者意圖和策略的另一示例包括指定哪個部分向外部暴露的接口定義。這實(shí)現(xiàn)公共接口與DAC內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)的分離。例如,接口定義將指定哪些實(shí)體可以被客戶端應(yīng)用程序或另一 DAC引用。開發(fā)者意圖和策略的另一示例可包括諸如針對DAC執(zhí)行的查詢之類的工作負(fù)荷配置概況fe息。如圖3所示,DAC實(shí)例306捕捉實(shí)際實(shí)例或部署特定信息。此信息是特定部署所特有的。DAC實(shí)例306表達(dá)部署意圖。DAC實(shí)例306與DAC類型304相關(guān)聯(lián)。對于每一個 DAC類型304,可以存在多個DAC實(shí)例。DAC實(shí)例306具有被保證在服務(wù)器結(jié)構(gòu)內(nèi)是唯一的標(biāo)識符。DAC實(shí)例306包含服務(wù)器結(jié)構(gòu)映射。DAC實(shí)例306的屬性314是DAC 302的部署的實(shí)例所特有的特征或?qū)傩?。屬?14 包括諸如DAC實(shí)例306標(biāo)識符和部署名稱之類的項(xiàng)。DAC實(shí)例306的部署模式316是DAC實(shí)例306中定義為特定部署所特有的SQL對象的部分。部署模式316包括諸如主體(principal)和索引之類的對象。DAC實(shí)例306的部署意圖和策略318提供有關(guān)DAC 302旨在“如何”被部署或解釋的信息。部署意圖和策略318包括諸如為特定部署所特有的預(yù)期服務(wù)器結(jié)構(gòu)映射和預(yù)期策略之類的項(xiàng)。結(jié)構(gòu)映射320是DAC實(shí)例306中定義DAC實(shí)例306和低層資源之間的映射的部分。 結(jié)構(gòu)映射320的內(nèi)容的示例包括諸如實(shí)例或矩陣之類的Microsoft SQL krver運(yùn)行時映射,以及諸如磁盤存儲器和計(jì)算機(jī)之類的硬件資源。
9
數(shù)據(jù)322是DAC實(shí)例306中表示與特定DAC實(shí)例相關(guān)聯(lián)的數(shù)據(jù)的部分。數(shù)據(jù)322 包括由應(yīng)用程序的用戶創(chuàng)建的應(yīng)用程序數(shù)據(jù)和操作數(shù)據(jù),如為DAC實(shí)例306或應(yīng)用程序所特有的性能數(shù)據(jù)。參考圖4,在400示出了數(shù)據(jù)層應(yīng)用程序組件(DAC)的特定實(shí)施例。DAC 402包括數(shù)據(jù)庫元素集合404。數(shù)據(jù)庫元素集合404包括數(shù)據(jù)庫對象406的數(shù)據(jù)庫對象標(biāo)識符。數(shù)據(jù)庫元素集合404還包括可操作以操縱數(shù)據(jù)庫對象408的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符。數(shù)據(jù)庫元素集合404還包括與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略410。 DAC402還包括與數(shù)據(jù)庫元素集合404相關(guān)聯(lián)的DAC名稱412。DAC名稱412可被訪問以供數(shù)據(jù)庫應(yīng)用程序414使用。數(shù)據(jù)庫元素集合404以編程方式與用戶可選擇支持計(jì)算機(jī)資源組418相關(guān)聯(lián),如416所示。DAC名稱412(例如,端點(diǎn)名稱)有點(diǎn)象域名服務(wù)(DNQ名稱。應(yīng)用程序可執(zhí)行程序連接到DAC名稱,而不連接到主存DAC 402的特定計(jì)算機(jī)或?qū)嵗?。通過將DAC 402映射到計(jì)算機(jī)和實(shí)例,在服務(wù)器結(jié)構(gòu)中建立DAC 402與特定計(jì)算機(jī)或?qū)嵗年P(guān)聯(lián)。可以通過簡單地將DAC 402重新映射到Microsoft SQL krver的新實(shí)例來將DAC 402移動到新實(shí)例, 而不影響應(yīng)用程序連接到數(shù)據(jù)庫服務(wù)器的方式(例如,不影響連接串)。沒有一個應(yīng)用程序必須更改;它們?nèi)匀窟B接到相同DAC名稱。例如,可以將帶有DAC名稱為Payroll (工資單)的DAC從Computerl (計(jì)算機(jī)1)上的默認(rèn)實(shí)例移到Computer2 (計(jì)算機(jī)2)上的另一實(shí)例。因?yàn)樗袘?yīng)用程序都引用已知的DAC名稱I^ayroll,因此它們?nèi)赃B接到同一個DAC 402。在一特定實(shí)施例中,用戶可選擇支持計(jì)算機(jī)資源組418是可使用自動工具改變的(例如,軟件應(yīng)用程序、用戶控制的應(yīng)用程序,諸如Microsoft SQL Server Management Studio (微軟SQL服務(wù)器管理工作室)、Visual Studio (視覺工作室)、行命令、 powershell (命令外殼)等等)。在另一特定實(shí)施例中,與集合相關(guān)聯(lián)的DAC名稱412是可從多個數(shù)據(jù)庫應(yīng)用程序訪問的。在另一特定實(shí)施例中,在修改用戶可選擇支持計(jì)算機(jī)資源組418時,DAC名稱412 是不變的。在另一特定實(shí)施例中,在修改數(shù)據(jù)庫元素集合404中的數(shù)據(jù)庫元素時,DAC名稱 412是不變的。在另一特定實(shí)施例中,數(shù)據(jù)庫運(yùn)行時資源是Microsoft SQL krver的實(shí)例,且當(dāng)將Microsoft SQL Server 的實(shí)例從第一Microsoft SQL Server 實(shí)例修改到第二Microsoft SQL Server實(shí)例時,DAC名稱412不變。在另一特定實(shí)施例中,數(shù)據(jù)庫元素集合404可以改變,或者用戶可選擇支持計(jì)算機(jī)資源組418可以改變,而DAC名稱412不變,以使得當(dāng)數(shù)據(jù)庫元素集合404被改變或者當(dāng)用戶可選擇支持計(jì)算機(jī)資源組418被改變時,一個或多個數(shù)據(jù)庫應(yīng)用程序(例如,數(shù)據(jù)庫應(yīng)用程序414)的應(yīng)用程序連接串不需要被重新編碼(例如,改變、更新、要求重新編譯應(yīng)用程序,要求重新創(chuàng)建應(yīng)用程序二進(jìn)制文件和/或可執(zhí)行程序)。在另一特定實(shí)施例中,使用DAC名稱412的數(shù)據(jù)庫應(yīng)用程序位于不同的聯(lián)網(wǎng)計(jì)算機(jī)上。在另一特定實(shí)施例中,與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略410被應(yīng)用于DAC 名稱412,并且,當(dāng)數(shù)據(jù)庫元素集合404改變時,或當(dāng)用戶可選擇支持計(jì)算機(jī)資源組418改變時,策略410繼續(xù)被應(yīng)用。在另一特定實(shí)施例中,DAC 402還包括與數(shù)據(jù)庫元素集合404接口的應(yīng)用程序編程接口(API)。例如,API可以實(shí)現(xiàn)對數(shù)據(jù)庫元素集合的元素的利用的測量。例如,API可以允許開發(fā)者與數(shù)據(jù)庫元素集合404接口,如圖1所示。在一特定實(shí)施例中,DAC 402被存儲在計(jì)算機(jī)可讀介質(zhì)中。計(jì)算機(jī)可讀介質(zhì)可包括打包數(shù)據(jù)庫對象的元數(shù)據(jù)、可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略的單個管理單元。雖然一次只描述了一個,但是,應(yīng)該理解,單個管理單元可以打包多個數(shù)據(jù)庫對象的元數(shù)據(jù)、可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的多個數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的多個策略。另外,多個數(shù)據(jù)庫對象包括模式、表、視圖、存儲過程、函數(shù)、 觸發(fā)器、數(shù)據(jù)類型、索引、登錄、用戶、許可、策略、統(tǒng)計(jì)數(shù)據(jù)、主鍵、外鍵、默認(rèn)值,以及檢查約束,和/或可以在數(shù)據(jù)庫服務(wù)器或數(shù)據(jù)庫中創(chuàng)建的任何其他對象??梢詫蝹€管理單元映射到第一物理計(jì)算資源??梢詫蝹€管理單元從第一物理計(jì)算資源重新映射到第二物理計(jì)算資源。第一物理計(jì)算資源的示例是處理器或存儲器存儲設(shè)備。在一特定實(shí)施例中,單個管理單元由相關(guān)聯(lián)的DAC名稱來標(biāo)識,其中,DAC名稱可被訪問以供數(shù)據(jù)庫應(yīng)用程序使用??刹僮饕圆倏v數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源可以是結(jié)構(gòu)化查詢語言(SQL)服務(wù)器的實(shí)例。Microsoft SQL Server的實(shí)例可包括Microsoft SQL Server數(shù)據(jù)庫引擎的實(shí)例、Microsoft SQL Server分析服務(wù)的實(shí)例,或SQL報(bào)告服務(wù)的實(shí)例,或其他數(shù)據(jù)庫服務(wù)器類型和廠商的實(shí)例。策略可以與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行相關(guān),包括資源限制策略或與軟件或硬件資源要求有關(guān)的過程。參考圖5,在500示出了系統(tǒng)的特定實(shí)施例。系統(tǒng)500包括DAC組502。在圖5所示出的實(shí)施例中,第一 DAC504、第二 DAC 506,以及第三DAC 508被包括在DAC組502中。替換地,DAC組502可包括任何數(shù)目個DAC。DAC 504、506,以及508中的每一個包括數(shù)據(jù)庫元素集合510、512,以及514的邏輯表示法。系統(tǒng)500還包括主存DAC組502的數(shù)據(jù)庫運(yùn)行時資源組516。在圖5所示出的實(shí)施例中,數(shù)據(jù)庫運(yùn)行時資源組516包括第一數(shù)據(jù)庫運(yùn)行時資源518、第二數(shù)據(jù)庫運(yùn)行時資源 520,以及第三數(shù)據(jù)庫運(yùn)行時資源522。替換地,數(shù)據(jù)庫運(yùn)行時資源組516可包括任何數(shù)目個數(shù)據(jù)庫運(yùn)行時資源。系統(tǒng)500還包括數(shù)據(jù)庫運(yùn)行時資源組516用來主存DAC組502的計(jì)算資源524。 在圖5所示出的實(shí)施例中,計(jì)算資源5M包括第一計(jì)算資源526、第二計(jì)算資源528,以及第三計(jì)算資源530。替換地,計(jì)算資源5M可包括任何數(shù)目個計(jì)算資源。計(jì)算資源5M可包括一個或多個計(jì)算機(jī)服務(wù)器資源、一個或多個計(jì)算機(jī)數(shù)據(jù)存儲資源,或者一個或多個虛擬機(jī)資源。一個或多個計(jì)算機(jī)服務(wù)器資源中的每一個都可包括處理器、存儲器,或網(wǎng)絡(luò)元件。一個或多個計(jì)算機(jī)數(shù)據(jù)存儲資源中的至少一個可以是包括多個文件的存儲卷。最初可以將一個或多個計(jì)算機(jī)服務(wù)器資源中的至少一個映射到第一存儲區(qū)域網(wǎng)絡(luò)(SAN),且隨后將它們映射到第二 SAN。在一個實(shí)施例中,DAC組502中的DAC 504,506,以及508中的每一個包括DAC容
11器。每一個DAC容器可包括打包數(shù)據(jù)庫對象的元數(shù)據(jù)、可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略的單
個管理單元。DAC組502中的第一 DAC 504可以取決于DAC組502中的第二 DAC 506。DAC組502中的DAC 504,506,以及508中的每一個可以由服務(wù)器結(jié)構(gòu)501的DAC 層來表示。包括計(jì)算資源526、528,以及530的計(jì)算資源5M可以由服務(wù)器結(jié)構(gòu)501的硬件資源層來表示。數(shù)據(jù)庫運(yùn)行時資源組516中的數(shù)據(jù)庫運(yùn)行時資源518、520以及522中的每一個可以由服務(wù)器結(jié)構(gòu)501的結(jié)構(gòu)化查詢語言(SQL)服務(wù)器運(yùn)行時層來表示。數(shù)據(jù)庫運(yùn)行時資源組516可包括提供Microsoft SQL krver服務(wù)的一個或多個 Microsoft SQL Server運(yùn)行時實(shí)例。一個或多個Microsoft SQL Server運(yùn)行時實(shí)例可包括 Microsoft SQL Server^Microsoft SQL Server 分析月艮務(wù),以及 Microsoft SQL Server 報(bào)告服務(wù)中的一個或多個實(shí)例。此外,一個或多個Microsoft SQL krver運(yùn)行時實(shí)例可包括模式和視圖??梢詫AC 504,506,以及508中的每一個映射到數(shù)據(jù)庫運(yùn)行時資源518、520,以及522中的一個,且可以將每一個數(shù)據(jù)庫運(yùn)行時資源518、520,以及522映射到一個或多個物理計(jì)算資源526、528,以及530。可以將數(shù)據(jù)庫運(yùn)行時資源從第一計(jì)算機(jī)重新映射到第二計(jì)算機(jī)。DAC 504,506,以及508中的每一個可包括相關(guān)聯(lián)的DAC名稱。DAC名稱可被訪問
以供數(shù)據(jù)庫應(yīng)用程序使用。參考圖6,在600示出了包括一組DAC的服務(wù)器結(jié)構(gòu)的第二實(shí)施例的框圖。服務(wù)器結(jié)構(gòu)608是一組DAC、主存這些DAC的Microsoft SQL krver運(yùn)行時,以及那些運(yùn)行時用來主存這些DAC的資源的基于模型的表示。服務(wù)器結(jié)構(gòu)模型具有如圖6所示的三層DAC層 610、服務(wù)器運(yùn)行時層612,以及宿主資源層614。模型內(nèi)的所有對象通過使用一組一般建模概念(名詞)來描述,且具有可以對那些對象執(zhí)行的一系列動作(動詞)。DAC層610主存DAC的服務(wù)器結(jié)構(gòu)定義。在所示出的實(shí)施例中,DAC層610包括第一 DAC 622、第二 DAC 624,以及第三DAC 626。替換地,DAC層610可包括任何數(shù)目個DAC。 服務(wù)器運(yùn)行時層612提供服務(wù)器結(jié)構(gòu)608內(nèi)的數(shù)據(jù)庫運(yùn)行時資源(例如,Microsoft SQL krver服務(wù))的視圖。在所示出的實(shí)施例中,服務(wù)器運(yùn)行時層612包括第一數(shù)據(jù)庫運(yùn)行時資源616、第二數(shù)據(jù)庫運(yùn)行時資源618,以及第三數(shù)據(jù)庫運(yùn)行時資源620。替換地,服務(wù)器運(yùn)行時層612可包括任何數(shù)目個數(shù)據(jù)庫運(yùn)行時資源。宿主資源層614表示服務(wù)器結(jié)構(gòu)608中的元素所使用的計(jì)算和存儲容量。在所示出的實(shí)施例中,宿主資源層614包括服務(wù)器資源 630,包括第一服務(wù)器636和第二服務(wù)器638。此外,宿主資源層614包括數(shù)據(jù)資源632,包括第一存儲資源640和第二存儲資源642。此外,宿主資源層614包括虛擬資源634,包括第一虛擬資源644和第二虛擬資源646。替換地,宿主資源層614可包括任何數(shù)目個服務(wù)器資源、數(shù)據(jù)資源或虛擬資源。服務(wù)器結(jié)構(gòu)608標(biāo)識DAC、主存DAC組的數(shù)據(jù)庫運(yùn)行時資源,以及數(shù)據(jù)庫運(yùn)行時資源用來主存DAC的計(jì)算資源。DAC 610中的每一個包括數(shù)據(jù)庫元素集合的邏輯表示。中心推理點(diǎn)604監(jiān)視服務(wù)器結(jié)構(gòu)608的實(shí)體。使用中心策略606在由服務(wù)器結(jié)構(gòu)608標(biāo)識的受影響的實(shí)體上自動地應(yīng)用接收到的數(shù)據(jù)庫管理動作和策略。
服務(wù)器結(jié)構(gòu)608中的每一個層包含四種類型的實(shí)體容器、元素、資源和映射。容器是服務(wù)器結(jié)構(gòu)608的給定層內(nèi)的頂層實(shí)體,并提供直觀的管理單元和身份。容器的示例包括DAC、計(jì)算機(jī)、虛擬機(jī)、存儲、Microsoft SQL Server,Microsoft SQL Server分析服務(wù), 以及Microsoft SQL krver報(bào)告服務(wù)的實(shí)例。元素是服務(wù)器結(jié)構(gòu)608中駐留在容器中的單元。例如,表和存儲過程是駐留在DAC中的元素。資源是具有有限容量,并且具有確定其容量的屬性的一種特殊類型的元素。處理器設(shè)備是細(xì)粒度資源的示例,且其時鐘速度是確定其容量的屬性的示例。存儲設(shè)備是包含諸如物理磁盤之類的更細(xì)粒度資源的資源的示例。 存儲設(shè)備的容量不僅由它包含的物理磁盤的屬性來決定而且還由諸如RAID級別之類的其配置屬性來決定。映射表示服務(wù)器結(jié)構(gòu)608的兩個部分之間的關(guān)系。映射是使服務(wù)器結(jié)構(gòu) 608成為Microsoft SQL krver環(huán)境的實(shí)際模型的名詞。映射可以是容器到容器、容器到元素、容器到資源、元素到元素、元素到資源,以及資源到資源。服務(wù)器結(jié)構(gòu)608中的每一個層610、612,以及614的構(gòu)成可以通過應(yīng)用上文所描述的一般建模概念來定義。每一個層都包括一個或多個容器,那些容器內(nèi)的元素和資源,以及服務(wù)器結(jié)構(gòu)608的相鄰層中的容器或元素之間的映射。DAC層610主存DAC的服務(wù)器結(jié)構(gòu)定義。每一個DAC都可以使用DAC容器來定義。 每一個DAC容器由諸如結(jié)構(gòu)、代碼、版本,以及策略之類的表示應(yīng)用程序?qū)嶓w的很多元素構(gòu)成。DAC 層 610 上的映射描述 DAC 和 Microsoft SQL Server 運(yùn)行時(例如,Microsoft SQL Server的實(shí)例)之間的關(guān)系。例如,可以將DAC層610中的DAC映射到服務(wù)器運(yùn)行時層612中的Microsoft SQL krver的實(shí)例。然后,可以通過在多個實(shí)例之間重新映射DAC 來將DAC從一個實(shí)例移到另一實(shí)例。作為示例,第一DAC 622可被映射到第一數(shù)據(jù)庫運(yùn)行時資源616(例如,Microsoft SQL krver的第一實(shí)例),然后,可以通過將第一 DAC622重新映射到第二數(shù)據(jù)庫運(yùn)行時資源618來將第一 DAC 622移動到第二數(shù)據(jù)庫運(yùn)行時資源618 (例如,Microsoft SQL Server 的第二實(shí)例)。映射還可以描述多個DAC之間的關(guān)系。DAC可以表達(dá)對另一 DAC的依賴,以便允許重新使用共同元素。例如,可以定義具有由諸如實(shí)施用于訂購供應(yīng)的公司策略的一組存儲過程之類的由多個應(yīng)用程序共享的元素的“基”DAC。需要那些元素的任何其他DAC可以通過映射到“基”DAC來引用它們。例如,第一 DAC 622可以依賴于第二 DAC 624。服務(wù)器運(yùn)行時層612提供服務(wù)器結(jié)構(gòu)內(nèi)的Microsoft SQL krver服務(wù)的視圖。 Microsoft SQL ServerjsifWW^^iSMicrosoft SQL Server>Microsoft SQL Server ^v 析服務(wù),以及Microsoft SQL krver報(bào)告服務(wù)的實(shí)例。每一個運(yùn)行時容器都具有一個或多個數(shù)據(jù)庫元素。數(shù)據(jù)庫元素可包括模式、表、視圖、存儲過程、函數(shù)、數(shù)據(jù)類型、索引、登錄、用戶、策略、統(tǒng)計(jì)數(shù)據(jù)、主鍵、外鍵、默認(rèn)值,檢查約束,和/或可以在數(shù)據(jù)庫服務(wù)器或數(shù)據(jù)庫中創(chuàng)建的任何其他元素。服務(wù)器運(yùn)行時層612上的映射描述特定SQL運(yùn)行時(例如,Microsoft SQL Server 的實(shí)例)和分配給它的物理資源之間的關(guān)系。例如,將駐留服務(wù)器運(yùn)行時層612中的實(shí)例映射到硬件資源層614中的物理計(jì)算機(jī)。可以通過在計(jì)算機(jī)之間重新映射實(shí)例來在物理計(jì)算機(jī)之間移動實(shí)例。作為示例,可以將第一數(shù)據(jù)庫資源616映射到第一服務(wù)器636,且可以通過將第一數(shù)據(jù)庫資源616從第一服務(wù)器636重新映射到第二服務(wù)器638來將第一數(shù)據(jù)庫資源616移動到第二服務(wù)器638。宿主資源層614表示服務(wù)器結(jié)構(gòu)608中的元素所使用的計(jì)算和存儲容量。宿主資源層614上的容器包括物理計(jì)算機(jī)、虛擬機(jī),以及存儲卷。資源容器還可以包含子元素。例如,物理服務(wù)器包含處理器、存儲器,以及網(wǎng)絡(luò)元素。存儲卷可以包含文件元素以及與存儲所提及的偽像有關(guān)的其他元素。宿主資源層614上的映射描述物理資源之間的關(guān)系。例如,宿主資源層映射表達(dá)哪些SAN邏輯單元號(LUN)可從每一個物理服務(wù)器訪問。SAN LUN可以通過改變物理服務(wù)器和SAN LUN之間的映射來在物理服務(wù)器之間移動。服務(wù)器結(jié)構(gòu)608支持管理動作的中央聲明和可應(yīng)用于服務(wù)器結(jié)構(gòu)608中的實(shí)體的策略。服務(wù)器結(jié)構(gòu)608的中央管理點(diǎn)602可以接收數(shù)據(jù)庫管理動作和策略。服務(wù)器結(jié)構(gòu) 608還提供可以監(jiān)視服務(wù)器結(jié)構(gòu)實(shí)體和自動地應(yīng)用管理動作和策略的推理引擎。圖6示出了服務(wù)器結(jié)構(gòu)608的中央管理機(jī)制。中央管理機(jī)制都引用記錄了服務(wù)器結(jié)構(gòu)608中的容器的相關(guān)細(xì)節(jié)、關(guān)系,以及約束的模型。服務(wù)器結(jié)構(gòu)608中的Microsoft SQL krver的實(shí)例之一可以被命名為中央管理點(diǎn)602,并為所有服務(wù)器結(jié)構(gòu)層提供集中式管理功能(如發(fā)現(xiàn)、策略定義,以及監(jiān)視)。中央管理點(diǎn)602是所有容器動作被觸發(fā)(例如,導(dǎo)入、移動、創(chuàng)建,以及部署)的地方。中央管理點(diǎn)602可以被主存在由服務(wù)器結(jié)構(gòu)608所標(biāo)識的數(shù)據(jù)庫運(yùn)行時資源中的一個上。例如,中央管理點(diǎn)602可被主存在第一數(shù)據(jù)庫運(yùn)行時資源616上、第二數(shù)據(jù)庫運(yùn)行時資源618,或第三數(shù)據(jù)庫運(yùn)行時資源620上。中央管理點(diǎn)602可以為服務(wù)器結(jié)構(gòu)層610、612,以及614提供發(fā)現(xiàn)、策略定義,以及監(jiān)視。中央推理點(diǎn)604提供服務(wù)器結(jié)構(gòu)608中的元素的數(shù)據(jù)模型。該模型被分析引擎用來預(yù)測資源使用趨勢,以及服務(wù)器結(jié)構(gòu)608上的可能的動作的影響。中央推理點(diǎn)604可以被用來對由SQL服務(wù)器結(jié)構(gòu)608標(biāo)識的實(shí)體采取中央推理動作。中央推理動作可包括第一動作,該第一動作,例如,估計(jì)卸載第一 DAC的影響,其中,其他DAC可以具有對第一 DAC的依賴。中央推理動作也可以包括第二動作,該第二動作,例如,估計(jì)修改計(jì)算資源中的一個的存儲器資源對一個或多個DAC的影響。中央推理動作也可以包括第三動作,該第三動作, 例如,呈現(xiàn)SQL服務(wù)器結(jié)構(gòu)中的Microsoft SQL Server的被配置成主存要部署的DAC的實(shí)例的列表。中央策略606可包括作為被定義為引導(dǎo)行為或動作的權(quán)威性原理的策略,且其中,策略指定可以應(yīng)用于由SQL服務(wù)器結(jié)構(gòu)608標(biāo)識的一組實(shí)體的一組條件。例如,該組實(shí)體可包括一個或多個Microsoft SQL Server運(yùn)行時實(shí)例,且策略可以基于Microsoft SQL krver的軟件版本來對將一個或多個Microsoft SQL krver運(yùn)行時實(shí)例結(jié)合到SQL服務(wù)器結(jié)構(gòu)608進(jìn)行限制。作為示例,可以只將Microsoft SQL Server 2008的實(shí)例結(jié)合到服務(wù)器運(yùn)行時層612。作為再一個示例,該組實(shí)體可包括一個或多個計(jì)算資源,且策略可以基于操作系統(tǒng)或存儲器量來對將一個或多個計(jì)算資源結(jié)合到SQL服務(wù)器結(jié)構(gòu)608進(jìn)行限制。 作為示例,只有帶有Windows Server 2008的64比特版本和至少四GB0GB)存儲器的服務(wù)器可以被結(jié)合到宿主資源層614。中央管理點(diǎn)602可以觸發(fā)SQL服務(wù)器結(jié)構(gòu)動作。例如,SQL服務(wù)器結(jié)構(gòu)動作可包括導(dǎo)入動作、導(dǎo)出動作、部署動作、復(fù)制動作、驗(yàn)證動作、安裝動作、卸載動作、添加動作、刪除動作、獲取動作、設(shè)置動作、枚舉動作、移動動作、創(chuàng)建動作、保存動作、升級動作、啟動動作、停止活動、重新啟動動作、運(yùn)行動作、掛起動作、恢復(fù)動作、禁用動作、啟用動作、測量動作、監(jiān)視動作、預(yù)測動作、管轄動作、映射動作、解映射動作、發(fā)現(xiàn)動作、比較動作、合并動作、 阻擋動作、解除阻擋動作、準(zhǔn)許動作,或撤銷動作。生命周期動詞描述用于從創(chuàng)建或?qū)氲椒?wù)器結(jié)構(gòu)608的時間到從服務(wù)器結(jié)構(gòu) 608移除的時間管理實(shí)體的動作組。例如,生命周期動詞覆蓋諸如創(chuàng)建、修改,以及刪除給定實(shí)體等動作。一些生命周期動詞可以應(yīng)用于層610、612,以及614中的一個或多個。生命周期動詞包括導(dǎo)入動作、導(dǎo)出動作、部署動作、復(fù)制動作、驗(yàn)證動作、安裝動作、卸載動作、添加動作、移除動作、獲取動作、設(shè)置動作、枚舉動作、移動動作、創(chuàng)建動作、保存動作,以及升級動作。導(dǎo)入動作從外部永久數(shù)據(jù)存儲創(chuàng)建新容器以及相關(guān)聯(lián)的元素。導(dǎo)入動作可以應(yīng)用于DAC層610。例如,導(dǎo)入動作可以將DAC從DAC包文件導(dǎo)入到服務(wù)器結(jié)構(gòu)608。導(dǎo)出動作從容器及其包含的元素創(chuàng)建永久外部數(shù)據(jù)存儲(例如,文件)。導(dǎo)出動作可以應(yīng)用于DAC層 610。例如,導(dǎo)出動作可以將DAC導(dǎo)出到文件。部署動作將容器以及其對象放在預(yù)期位置。部署動作可以應(yīng)用于DAC層610。例如,部署動作可以將第一 DAC 622部署到服務(wù)器運(yùn)行時層612中的一個實(shí)例(例如,第一實(shí)例 616)。復(fù)制動作將一組元素從一個容器復(fù)制到另一容器。復(fù)制動作可以應(yīng)用于DAC層 610和服務(wù)器運(yùn)行時層612。例如,復(fù)制動作可以將數(shù)據(jù)庫從Microsoft SQL krver的一個實(shí)例復(fù)制到服務(wù)器運(yùn)行時層612中的另一實(shí)例(例如,從第一實(shí)例616到第二實(shí)例618)。驗(yàn)證動作檢查目標(biāo)容器、元素、資源或映射是否符合指定準(zhǔn)則。驗(yàn)證動作可以應(yīng)用于DAC層610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,驗(yàn)證動作可以驗(yàn)證 Microsoft SQL Server的實(shí)例是否已啟用CLR集成。安裝動作將DAC配置成在服務(wù)器結(jié)構(gòu)608中操作。安裝動作可以應(yīng)用于DAC層 610和服務(wù)器運(yùn)行時層612。例如,安裝動作可以在第一實(shí)例616上安裝DAC。卸載動作從指定位置移除容器以及其元素。卸載動作可以應(yīng)用于DAC層610和服務(wù)器運(yùn)行時層612。 例如,卸載動作可以從第一實(shí)例616卸載DAC。添加動作將在外部創(chuàng)建的容器、元素或資源的表示結(jié)合到服務(wù)器結(jié)構(gòu)中。添加動作可以應(yīng)用于服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,添加動作可以將第一 Microsoft SQL krver實(shí)例616添加到服務(wù)器運(yùn)行時層612中。移除動作將外部創(chuàng)建的容器、元素或資源與服務(wù)器結(jié)構(gòu)608解除關(guān)聯(lián)。移除動作可以應(yīng)用于服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,移除動作可以從服務(wù)器運(yùn)行時層612移除Microsoft SQL Server 實(shí)例616。獲取動作檢索容器、元素、資源或映射的當(dāng)前配置。獲取動作可以應(yīng)用于DAC層 610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,獲取動作可以獲取在第一 Microsoft SQL Server實(shí)例616上安裝的DAC的版本號。設(shè)置動作更新容器、元素、資源或映射的當(dāng)前配置。設(shè)置動作可以應(yīng)用于DAC層 610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,設(shè)置動作可以設(shè)置在第一MicrosoftSQL Server實(shí)例616上安裝的DAC的版本號。枚舉動作獲取容器內(nèi)的一組元素或資源。枚舉動作可以應(yīng)用于DAC層610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,枚舉動作可以枚舉第一服務(wù)器636上的資源。移動動作將一組元素或資源從一個容器、元素或資源移動到另一個。移動動作可以應(yīng)用于DAC層610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,移動動作可以將數(shù)據(jù)庫從Microsoft SQL krver的一個實(shí)例移動到服務(wù)器運(yùn)行時層612中的另一實(shí)例。創(chuàng)建動作創(chuàng)建新容器或元素。創(chuàng)建動作可以應(yīng)用于DAC層610和服務(wù)器運(yùn)行時層 612。例如,創(chuàng)建動作可以創(chuàng)建指定DAC要求Microsoft SQL Server 2008的新策略約束。保存動作保持容器、元素、資源或映射的當(dāng)前配置。保存動作可以應(yīng)用于DAC層 610,服務(wù)器運(yùn)行時層612,以及宿主資源層614。例如,保存動作可以保存在第一Microsoft SQL Server實(shí)例616上安裝的DAC的版本號。升級動作將容器或元素的現(xiàn)有配置轉(zhuǎn)換為新定義。升級動作可以應(yīng)用于DAC層 610和服務(wù)器運(yùn)行時層612。例如,升級動作可以將在第一 Microsoft SQL krver實(shí)例616 上安裝的訂單表定義從第一版本升級到第二版本。服務(wù)器結(jié)構(gòu)608具有若干個進(jìn)程,這些進(jìn)程執(zhí)行諸如監(jiān)視性能、協(xié)調(diào)變化,以及驗(yàn)證是否符合策略之類的動作。下面動詞組可以被用來管理進(jìn)程。所有其余的動詞適用于服務(wù)器結(jié)構(gòu)608的所有層(例如,DAC層610、服務(wù)器運(yùn)行時層612,以及宿主資源層614)。進(jìn)程控制動詞包括啟動動作、停止動作、重新啟動動作、運(yùn)行動作、掛起動作、恢復(fù)動作、禁用動作,以及啟用動作。啟動動作發(fā)起持續(xù)運(yùn)行直到停止的進(jìn)程。例如,啟動動作開始第一Microsoft SQL Server實(shí)例616上的協(xié)調(diào)。停止動作停止運(yùn)行中的進(jìn)程。例如,停止動作可以停止第一 SQL krver實(shí)例616上的協(xié)調(diào)。重新啟動動作停止運(yùn)行中的進(jìn)程,然后,再次啟動它。例如,重新啟動動作可以重新啟動第一 Microsoft SQL krver實(shí)例616上的協(xié)調(diào)。運(yùn)行動作啟動執(zhí)行并在完成時自動地停止的進(jìn)程。例如,運(yùn)行動作可以在第一 Microsoft SQL krver實(shí)例616上運(yùn)行發(fā)現(xiàn)。掛起動作暫停一進(jìn)程,該進(jìn)程保持暫停,直到它被恢復(fù)。例如,掛起動作可掛起第一 Microsoft SQL krver實(shí)例616上的發(fā)現(xiàn)?;謴?fù)動作繼續(xù)掛起的進(jìn)程。例如,恢復(fù)動作可以恢復(fù)第一Microsoft SQL krver實(shí)例616上的發(fā)現(xiàn)。禁用動作將進(jìn)程配置成不可用,以使得它無法被啟動。進(jìn)程保持被禁用,直到它被啟用。例如,禁用動作可以禁用第一 Microsoft SQL krver實(shí)例616上的協(xié)調(diào)。啟用動作將被禁用的進(jìn)程配置成能夠啟動。例如,啟用動作可以啟用第一 Microsoft SQL krver實(shí)例616上的協(xié)調(diào)。性能管理動詞被用來就服務(wù)器結(jié)構(gòu)資源的當(dāng)前利用分析服務(wù)器結(jié)構(gòu)608的當(dāng)前或預(yù)測的健康。這些動詞還提供用于管轄由服務(wù)器結(jié)構(gòu)608內(nèi)的各種容器和元素對資源的使用的手段。性能管理動詞可包括測量動作、監(jiān)視動作、預(yù)測動作,以及管轄動作。測量動作收集與資源、元素或容器有關(guān)的性能統(tǒng)計(jì)數(shù)據(jù)。例如,測量動作可以測量第一服務(wù)器636的卷E上被數(shù)據(jù)庫文件Finance.mdb (財(cái)政.mdb)所使用的空間。監(jiān)視動作相對于策略評估與資源、元素或容器相關(guān)的性能統(tǒng)計(jì)數(shù)據(jù)。例如,監(jiān)視動作可以監(jiān)視第一服務(wù)器636的卷E上被數(shù)據(jù)庫文件Finance, mdb所使用的空間,來查看利用超出容量的80% 的情況的出現(xiàn)。預(yù)測動作根據(jù)歷史數(shù)據(jù)、資源變化,或諸如部署或創(chuàng)建之類的服務(wù)器結(jié)構(gòu)動作來預(yù)測容器、元素或資源的性能統(tǒng)計(jì)數(shù)據(jù)。例如,預(yù)測動作可以預(yù)測何時將需要額外的存
16儲器以適應(yīng)Finance DAC (財(cái)政DAC)的增長。作為再一個示例,預(yù)測動作預(yù)測何時將需要額外的資源以適應(yīng)總體服務(wù)器結(jié)構(gòu)的增長。管轄動作指定分配給容器或元素的最小或最大資源量。例如,管轄動作可以將第一 Microsoft SQL krver實(shí)例616的CPU使用限制到第二服務(wù)器638的CPU容量的50%。映射動詞提供管理服務(wù)器結(jié)構(gòu)608內(nèi)的多層之間的關(guān)系的簡單手段。映射動詞主要被用來在兩個相鄰層之間建立關(guān)系。并非所有的關(guān)系都是使用動詞來管理的。例如,計(jì)算機(jī)與其存儲之間的關(guān)系通過在物理地操縱計(jì)算機(jī)來控制。映射動詞可包括映射動作和解映射動作。在概念上,這些動詞還可以被視為可以對服務(wù)器結(jié)構(gòu)608采取的頂層動作,其導(dǎo)致一系列其他生命周期動作被執(zhí)行。例如,將DAC映射到Microsoft SQL krver的實(shí)例告訴系統(tǒng),DAC應(yīng)該在該實(shí)例上可用。這將調(diào)用使該DAC在指定的實(shí)例上可用所需的諸如部署或安裝之類的所有動詞。映射動作在容器、元素或資源之間創(chuàng)建關(guān)系。例如,映射動作可以將第一 DAC 622 加入到第一 Microsoft SQL krver實(shí)例616。解映射動作移除容器、元素或資源之間的映射。例如,解映射動作可以將第一 DAC 622與第一 Microsoft SQL Server實(shí)例616分離。協(xié)調(diào)是用于標(biāo)識服務(wù)器結(jié)構(gòu)中已經(jīng)從它們的規(guī)定的定義漂移的實(shí)體的進(jìn)程。例如,協(xié)調(diào)檢測生產(chǎn)服務(wù)器中的表的定義是否已與在DAC中的定義的變得不同。三個服務(wù)器結(jié)構(gòu)動詞實(shí)現(xiàn)協(xié)調(diào)。協(xié)調(diào)動詞可包括發(fā)現(xiàn)動作、比較動作,以及合并動作。發(fā)現(xiàn)動作定義查找新項(xiàng)并給出有成果的洞察的操作。例如,發(fā)現(xiàn)動作可以發(fā)現(xiàn)第一 Microsoft SQL krver實(shí)例616中的Employee表中的新列。比較動作將容器、元素或資源的當(dāng)前配置與預(yù)定義配置匹配,并報(bào)告任何差異。例如,比較動作可以將存在于第一 Microsoft SQL Server實(shí)例616上的Employee (雇員)表對照DAC中的表定義進(jìn)行比較, 并發(fā)現(xiàn)第一 Microsoft SQL krver實(shí)例616中的表的版本具有DAC中未定義的列。合并動作從多個實(shí)例創(chuàng)建容器、元素或資源的單個配置。例如,合并動作可以將Employee表中的新列的定義合并到DAC定義。訪問動詞提供控制對服務(wù)器結(jié)構(gòu)模型的部分的訪問以支持長時間運(yùn)行的進(jìn)程的手段。例如,將文件從一個卷移動到另一卷的進(jìn)程必須控制對目的地卷的訪問,以使得多個進(jìn)程不會作出使空間沖突的分配。安全性動詞將對服務(wù)器結(jié)構(gòu)608內(nèi)的容器和元素的訪問限制到被授權(quán)的用戶。本發(fā)明不提供新的授權(quán)基礎(chǔ)結(jié)構(gòu),而是這些動詞表示跨服務(wù)器結(jié)構(gòu) 608的授權(quán)配置的統(tǒng)一接口。然后,本公開利用Microsoft SQL krver中已經(jīng)存在的各種低層授權(quán)機(jī)制。訪問和安全性動詞可包括阻擋動作、解除阻擋動作,授權(quán)動作,以及撤銷動作。阻擋動作給發(fā)布進(jìn)程提供對容器、元素或資源的配置的排他性訪問,并防止其他進(jìn)程訪問該配置。此動詞作用于服務(wù)器結(jié)構(gòu)608的模型內(nèi)的數(shù)據(jù),而不是作用于實(shí)際實(shí)體本身。例如,阻擋動作可以阻止對第一服務(wù)器636的存儲卷E的訪問,以便可以預(yù)留空間以執(zhí)行文件遷移。解除阻擋動作釋放對容器、元素或資源的配置的排他性訪問。此動詞作用于服務(wù)器結(jié)構(gòu)608的模型內(nèi)的數(shù)據(jù),而不是作用于實(shí)際實(shí)體本身。例如,在文件遷移完成之后,解除阻擋動作可以解除對第一服務(wù)器636的存儲卷E的訪問的阻擋。準(zhǔn)許動作給予訪問容器、元素或資源的主體許可(principal permission) 0例如,準(zhǔn)許動作可以給主體Janet 準(zhǔn)許對DAC的寫入訪問。撤銷動作拒絕訪問容器或元素的主體許可。例如,撤銷動作可以撤銷主體Janet對DAC的寫入訪問。參考圖7,示出了自動地應(yīng)用數(shù)據(jù)庫管理動作和策略的方法的特定實(shí)施例。在 702,方法包括在SQL服務(wù)器結(jié)構(gòu)的中央管理點(diǎn)(例如,在圖6中的服務(wù)器結(jié)構(gòu)608的中央管理點(diǎn)60 接收數(shù)據(jù)庫管理動作和策略。SQL服務(wù)器結(jié)構(gòu)標(biāo)識DAC、主存DAC組的數(shù)據(jù)庫運(yùn)行時資源,以及數(shù)據(jù)庫運(yùn)行時資源用來主存DAC的計(jì)算資源。DAC中的每一個包括數(shù)據(jù)庫元素集合的邏輯表示。移動到704,方法還包括在中央推理點(diǎn)(例如,圖6中的服務(wù)器結(jié)構(gòu)608的中央推理點(diǎn)604)監(jiān)視SQL服務(wù)器結(jié)構(gòu)的實(shí)體。移動到706,方法還包括在由SQL Server結(jié)構(gòu)所標(biāo)識的受影響的實(shí)體處自動地應(yīng)用接收到的數(shù)據(jù)庫管理動作和策略(例如, 使用圖6中的中央策略606)。參考圖8,實(shí)體關(guān)系圖(ERD)示出了服務(wù)器結(jié)構(gòu)如何表示描述了數(shù)據(jù)層的組件的模型以及它們?nèi)绾侮P(guān)聯(lián)。圖8中的實(shí)體關(guān)系圖(ERD)示出了此模型如何成形以支持服務(wù)器結(jié)構(gòu)的三層的結(jié)構(gòu)和語義。每一層都表示成模型內(nèi)的正式實(shí)體,如容器、元素和資源。該模型還定義這些實(shí)體之間的關(guān)系語義,從而導(dǎo)致服務(wù)器結(jié)構(gòu)的定義的結(jié)構(gòu)。此結(jié)構(gòu)通過實(shí)現(xiàn)本公開的實(shí)施例來推理并對服務(wù)器結(jié)構(gòu)采取措施,來促進(jìn)下一節(jié)中所描述的機(jī)制。參考圖9,在900示出了系統(tǒng)的特定說明性實(shí)施例。中央管理服務(wù)器(CMS)902向服務(wù)器結(jié)構(gòu)提供集中式管理點(diǎn)。CMS 902連接到中央管理儲存庫(CMR)904。服務(wù)器結(jié)構(gòu)中的Microsoft SQL Server的被管理的實(shí)例連接到CMS 902,并將信息上傳到CMR 904中。 CMS 902提供用于發(fā)現(xiàn)網(wǎng)絡(luò)上的SQL服務(wù)實(shí)例、預(yù)設(shè)DAC、將DAC元素放在所希望的位置、對照準(zhǔn)則檢查DAC、以及協(xié)調(diào)服務(wù)器結(jié)構(gòu)中的元素之間的差異的動作。CMR 904包含服務(wù)器結(jié)構(gòu)的模型(例如,所有相關(guān)細(xì)節(jié)、關(guān)系,以及約束)。CMS 902 是用于部署分析、影響分析,以及假設(shè)分析的中央推理點(diǎn),并包含核心、詳細(xì)的,以及鏈接的數(shù)據(jù)類型。兩種類型基于從IMR(例如,IMR 910和914)復(fù)制到CMR 904的頻度來利用類別表示CMR 904中所包含的數(shù)據(jù)。頻繁被復(fù)制的數(shù)據(jù)被稱為核心數(shù)據(jù)。不太頻繁被復(fù)制的數(shù)據(jù)被稱為詳細(xì)數(shù)據(jù)。鏈接的數(shù)據(jù)類型充當(dāng)指向不存儲在CMR 904中的數(shù)據(jù)的索引或指針。中央管理數(shù)據(jù)倉庫(CMDW)906實(shí)現(xiàn)跨一組物理服務(wù)器和實(shí)例集中式地報(bào)告歷史性能統(tǒng)計(jì)數(shù)據(jù)。收集駐留在每一個被管理的SQL krver運(yùn)行時實(shí)例上的數(shù)據(jù),并將它們上傳到CMDW 906數(shù)據(jù)庫的用于監(jiān)視和報(bào)告目的的位置。中央結(jié)構(gòu)服務(wù)(CFS)908為核心CMS 902動作提供API。這些動作包括發(fā)現(xiàn)網(wǎng)絡(luò)上的SQL服務(wù)實(shí)例、預(yù)設(shè)DACjf DAC元素放在所希望的位置、對照準(zhǔn)則檢查DAC、以及協(xié)調(diào)服務(wù)器結(jié)構(gòu)中的元素之間的差異。實(shí)例管理儲存庫(IMR)是存在于Microsoft SQL krver的實(shí)例內(nèi)的數(shù)據(jù)庫。例如,第一 IMR 910存在于第一 Microsoft SQL Server實(shí)例912內(nèi)。第二 IMR 914存在于第二 Microsoft SQL krver實(shí)例916內(nèi)。IMR是服務(wù)器結(jié)構(gòu)的所有部署或修改的最初目標(biāo)。 被稱為“集合組”的機(jī)制復(fù)制IMR信息,并將它上傳到CMR 904,以提供服務(wù)器結(jié)構(gòu)的聚合層視圖。實(shí)例管理數(shù)據(jù)倉庫(IMDW)是存在于Microsoft SQL krver的每一個實(shí)例內(nèi)的管理數(shù)據(jù)倉庫。例如,第一 IMDW 918存在于第一 Microsoft SQL Server實(shí)例912內(nèi)。第二 IMDff 920存在于第二 Microsoft SQL krver實(shí)例916內(nèi)。IMDW是實(shí)例的性能數(shù)據(jù)(例如,報(bào)告和/或監(jiān)視)的最初目標(biāo),其稍后被上傳到CMDW 906,以提供服務(wù)器結(jié)構(gòu)的聚合視圖。實(shí)例結(jié)構(gòu)服務(wù)器(IFS)為核心管理動作提供API。例如,第一 IFS 922存在于第一 Microsoft SQL Server 實(shí)例 912 內(nèi)。第二 IFS 擬4 存在于第二 Microsoft SQL Server 實(shí)例916內(nèi)。這些動作包括驗(yàn)證并在本地實(shí)例上安裝DAC實(shí)例,發(fā)現(xiàn)安裝漂移,并提供協(xié)調(diào)操作。IFS也可以測量實(shí)例的性能并執(zhí)行從CMS 902發(fā)送的動作。參考圖10,在1000,示出了端對端管理過程的說明性視圖。本公開提供用于在從開發(fā)至部署到操作的完整軟件生命周期中管理Microsoft SQL krver數(shù)據(jù)庫應(yīng)用程序的工具和基礎(chǔ)結(jié)構(gòu)。在本節(jié)中,對前一節(jié)中所描述的主要體系結(jié)構(gòu)組件施加本公開的一些規(guī)范工作流,以便洞察核心設(shè)計(jì)原理。在1002,安裝系統(tǒng),并配置服務(wù)器結(jié)構(gòu)。在1004,從現(xiàn)有部署創(chuàng)建DAC,并將其導(dǎo)入到服務(wù)器結(jié)構(gòu)中。在1006,監(jiān)視并預(yù)測服務(wù)器結(jié)構(gòu)利用?;诒O(jiān)視和預(yù)測,可以調(diào)整服務(wù)器結(jié)構(gòu)資源。例如,在1008,管轄服務(wù)器結(jié)構(gòu)資源。在1010,移動服務(wù)器結(jié)構(gòu)元素。參考圖11,示出了安裝過程的說明性示例。安裝包由三個組件構(gòu)成工具擴(kuò)展、服務(wù)器結(jié)構(gòu)服務(wù),以及管理儲存庫模式。將工具擴(kuò)展應(yīng)用于Visual Mudio和Microsoft SQL Server Management Studio。服務(wù)器結(jié)構(gòu)服務(wù)和管理儲存庫模式被安裝在中央管理服務(wù)器和被管理的實(shí)例內(nèi)。在1102,獲取安裝包。在1104,安裝工具擴(kuò)展(Visual Studio和Microsoft SQL Server Management Studio)。在1106,安裝和配置中央管理服務(wù)器(CMS)和中央結(jié)構(gòu)服務(wù) (CFS)。在1108,安裝中央管理儲存庫(CMR)和中央管理數(shù)據(jù)倉庫(CMDW)模式。在1110, 發(fā)現(xiàn)所有運(yùn)行時實(shí)例,并發(fā)現(xiàn)將變?yōu)榉?wù)器結(jié)構(gòu)中的被管理的實(shí)例的實(shí)例。在1112,在每一個被管理的實(shí)例內(nèi)創(chuàng)建服務(wù)器結(jié)構(gòu)安裝作業(yè)。在1114,在每一個被管理的實(shí)例中安裝實(shí)例管理儲存庫(IMR)和實(shí)例管理數(shù)據(jù)倉庫(IMDW)模式。在1116,在1118安裝并啟動服務(wù)器結(jié)構(gòu)IMDW到CMDW數(shù)據(jù)上傳機(jī)制。參考圖12,示出了從現(xiàn)有部署創(chuàng)建DAC并將其導(dǎo)入到服務(wù)器結(jié)構(gòu)的說明性示例。 DAC是服務(wù)器結(jié)構(gòu)內(nèi)的核心邏輯管理單元。服務(wù)器結(jié)構(gòu)管理DAC以確保最佳資源利用。通 MJMir DAC 1 0 Visual Studio Microsoft SQL Server Management studio 內(nèi)創(chuàng)作DAC。另外,可通過選定應(yīng)用程序數(shù)據(jù)庫對象來從先前的數(shù)據(jù)庫部署逆向工程設(shè)計(jì)出新的DAC。在1202,創(chuàng)建DAC。在1204,將實(shí)例對象添加到DAC中。在1206,將實(shí)例設(shè)置和策略添加到DAC中。在1208,將部署設(shè)置和策略添加到DAC中。在1210,對照IMR,驗(yàn)證DAC 設(shè)置和策略。在1212,將DAC保存到IMR0在1214,將DAC從IMR復(fù)制到CMR0任選地,在 1216,創(chuàng)建DAC包二進(jìn)制文件,以供以后在Visual Studio中使用。參考圖13,示出了監(jiān)視和預(yù)測服務(wù)器結(jié)構(gòu)利用的一個說明性示例??梢钥绶?wù)器結(jié)構(gòu)和DAC設(shè)置和評估資源利用策略,以避免資源被過度利用和利用不足。在1302,在CMR中設(shè)置全局資源監(jiān)視策略。在1304,將統(tǒng)計(jì)信息添加到IMDW中。 在1306,在IMR中設(shè)置數(shù)據(jù)庫資源監(jiān)視策略。在1308,在IMDW中監(jiān)視資源利用統(tǒng)計(jì)數(shù)據(jù)。 在1310,將IMDW資源利用統(tǒng)計(jì)數(shù)據(jù)導(dǎo)出到CMDW。在1312,在CMDW中監(jiān)視當(dāng)前資源利用。 在1314,在CMDW中監(jiān)視預(yù)測資源利用。參考圖14,示出了調(diào)整服務(wù)器結(jié)構(gòu)資源的一個說明性示例??梢钥绶?wù)器結(jié)構(gòu)和DAC設(shè)置和評估資源分配策略,以平衡對DAC可用的資源。可以通過諸如就地資源管轄之類的動作,以及諸如在卷之間移動文件或在服務(wù)器之間移動數(shù)據(jù)庫應(yīng)用程序之類的移動服務(wù)器結(jié)構(gòu)元素,來實(shí)現(xiàn)對資源進(jìn)行調(diào)整??梢酝ㄟ^實(shí)現(xiàn)新資源管轄策略來調(diào)整服務(wù)器結(jié)構(gòu)資源。在1402,對于與目標(biāo)DAC有關(guān)的DAC,預(yù)測資源平衡選項(xiàng)。在1404,在CMR中設(shè)置新資源策略。在1406,將新資源策略復(fù)制到每一個IMR。在1408,在每一個IMR中實(shí)現(xiàn)資源
管轄規(guī)則。參考圖15,示出了調(diào)整服務(wù)器結(jié)構(gòu)資源的另一說明性示例。在圖15中,示出了將 DAC從一個文件移動到另一文件的過程。在1502,從CMR中獲取DAC。在1504,預(yù)測潛在目標(biāo)卷。在1506,將DAC映射到另一卷(卷2)。在1508,將DAC從CMR復(fù)制到IMR0在1510,在IMR中驗(yàn)證DAC0在1512,安裝DAC (更改數(shù)據(jù)庫,復(fù)制文件…)。在1514,在CMR中驗(yàn)證DAC。參考圖16,示出了調(diào)整服務(wù)器結(jié)構(gòu)資源的另一說明性示例。在圖16中,示出了將 DAC從Microsoft SQL Server的一個實(shí)例移動到另一實(shí)例的過程。在1602,從CMR中獲取DAC。在1604,預(yù)測潛在目標(biāo)實(shí)例。在1606,將DAC映射到運(yùn)行時實(shí)例2。在1608,將DAC從CMR復(fù)制到實(shí)例2IMR。在1610,在實(shí)例2IMR中驗(yàn)證DAC。 在1612,將DAC安裝到實(shí)例2IMR中。在1614,在CMR中移動DAC端點(diǎn)名稱。在1616,在CMR 中驗(yàn)證DAC。這里所描述的實(shí)施例的說明旨在提供對各實(shí)施例的結(jié)構(gòu)的一般理解。說明不旨在作為利用這里所描述的結(jié)構(gòu)或方法的裝置和系統(tǒng)的所有元件和特征的完整描述。許多其他實(shí)施例對本領(lǐng)域的技術(shù)人員在審閱本發(fā)明后是顯而易見的。也可以利用其他實(shí)施例,并從本發(fā)明派生出其他實(shí)施例,以便可以在不偏離本發(fā)明的范圍的情況下作出結(jié)構(gòu)和邏輯上的替換和改變。相應(yīng)地,本發(fā)明和附圖應(yīng)被視為說明性的,而不是限制性的。本領(lǐng)域技術(shù)人員將進(jìn)一步理解,結(jié)合這里所說明的實(shí)施例所描述的各種說明性邏輯塊、配置、模塊、電路、以及算法步驟,可以作為電子硬件、計(jì)算機(jī)軟件或兩者的組合來實(shí)現(xiàn)。為清楚地示出硬件或軟件的此互換性,上文已經(jīng)一般地在功能方面描述了各種說明性組件、塊、配置、模塊、電路,以及步驟。此類功能集是被實(shí)現(xiàn)為硬件還是軟件取決于具體應(yīng)用和強(qiáng)加于整體系統(tǒng)的設(shè)計(jì)約束。技術(shù)人員可針對每種特定應(yīng)用以不同方式來實(shí)現(xiàn)所描述的功能集,但此類設(shè)計(jì)決策不應(yīng)被解釋為致使脫離本公開的范圍。結(jié)合此處所公開的各實(shí)施例所描述的方法的各個步驟可直接用硬件、由處理器執(zhí)行的軟件模塊、或兩者的組合來實(shí)現(xiàn)。軟件模塊可駐留在諸如隨機(jī)存取存儲器(RAM)、閃存、 只讀存儲器(ROM)、寄存器、硬盤、可移動盤、⑶-ROM、或本領(lǐng)域內(nèi)已知的任何其他形式的存儲介質(zhì)等計(jì)算機(jī)可讀介質(zhì)中。示例性存儲介質(zhì)耦合到處理器以使得該處理器能從/向該存儲介質(zhì)讀取/寫入信息。在替換性方案中,存儲介質(zhì)可以集成到處理器中,或者處理器和存儲介質(zhì)可以作為分立的元件駐留在計(jì)算設(shè)備或計(jì)算機(jī)系統(tǒng)中。雖然這里顯示和描述了具體的實(shí)施例,但是,應(yīng)該了解,被設(shè)計(jì)為實(shí)現(xiàn)相同或類似的目的的任何隨后的安排都可以代替所示出的具體實(shí)施例。本說明書計(jì)劃涵蓋各種實(shí)施例的任何隨后的修改或變化。提供了本公開的摘要以符合37C. F. R. § 1. 72 (b),且應(yīng)理解,它不能被用來解釋或
20限制權(quán)利要求的范圍或含義。此外,在前面的具體實(shí)施方式
中,出于將本公開連成一個整體的目的,各種特征可以組合到一起,或在一個實(shí)施例中進(jìn)行描述。本發(fā)明不應(yīng)被解釋為反映帶權(quán)利要求的實(shí)施例需要比每一個權(quán)利要求中明確地記載的特征更多的特點(diǎn)的意圖。相反,如下面的權(quán)利要求所反映的,本發(fā)明的主題可以涉及少于所公開的實(shí)施例中的任一個的所有特征。 提供上文對所公開的實(shí)施例的描述,以使本領(lǐng)域技術(shù)人員能作出或使用所公開的實(shí)施例。對這些實(shí)施例的各種修改對于本領(lǐng)域技術(shù)人員將是顯而易見的,并且本文中定義的普適原理可被應(yīng)用于其他實(shí)施例而不會脫離本公開的范圍。因此,本發(fā)明并不旨在限于此處所示出的各實(shí)施例,而是按照與所附權(quán)利要求書所定義的原理和新穎特征相一致的盡可能最寬的范圍。
權(quán)利要求
1.一種用于將數(shù)據(jù)庫元素與一組支持計(jì)算機(jī)資源相關(guān)聯(lián)的計(jì)算機(jī)實(shí)現(xiàn)系統(tǒng),所述系統(tǒng)包括包含數(shù)據(jù)庫元素集合(404)的數(shù)據(jù)層應(yīng)用程序組件002),所述數(shù)據(jù)庫元素集合(404) 包括與一個或多個數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù),其中與所述一個或多個數(shù)據(jù)庫對象有關(guān)的所述元數(shù)據(jù)包括所述數(shù)據(jù)庫對象中的每一個的標(biāo)識符(408)、可操作以操縱所述數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符G10),以及與所述數(shù)據(jù)庫運(yùn)行時資源 (410)的執(zhí)行有關(guān)的策略;以及與所述數(shù)據(jù)庫元素集合(404)相關(guān)聯(lián)的數(shù)據(jù)層應(yīng)用程序組件名稱G12),其中所述數(shù)據(jù)層應(yīng)用程序組件名稱G12)能被訪問以供數(shù)據(jù)庫應(yīng)用程序(414)使用,其中所述數(shù)據(jù)庫元素集合(404)以編程方式與用戶可選擇支持計(jì)算機(jī)資源組(418)相關(guān)聯(lián)(416)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述用戶可選擇支持計(jì)算機(jī)資源組是能使用自動化工具來改變的。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,當(dāng)所述用戶可選擇支持計(jì)算機(jī)資源組被修改時,或者當(dāng)所述數(shù)據(jù)庫元素集合中的一個或多個數(shù)據(jù)庫元素被修改時,所述數(shù)據(jù)層應(yīng)用程序組件名稱不變。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫元素集合、或者一個或多個運(yùn)行時資源、或者所述用戶可選擇支持計(jì)算機(jī)資源組可以改變,其中所述數(shù)據(jù)層應(yīng)用程序組件名稱不變,以使得一個或多個數(shù)據(jù)庫應(yīng)用程序的應(yīng)用程序連接串不需要響應(yīng)于對所述數(shù)據(jù)庫元素集合的改變和對用戶可選擇支持計(jì)算機(jī)資源組的改變中的一個或多個而被重新編碼。
5.如權(quán)利要求4所述的系統(tǒng),其特征在于,使用所述數(shù)據(jù)層應(yīng)用程序組件名稱的所述數(shù)據(jù)庫應(yīng)用程序位于不同的聯(lián)網(wǎng)計(jì)算機(jī)上。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,與所述數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的所述策略被應(yīng)用于所述數(shù)據(jù)層應(yīng)用程序組件名稱,并且其中當(dāng)所述數(shù)據(jù)庫元素集合、或者一個或多個運(yùn)行時資源、或者所述用戶可選擇支持計(jì)算機(jī)資源組被改變時,所述策略繼續(xù)被應(yīng)用。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括用于與所述數(shù)據(jù)庫元素集合接口的 API,其中所述API實(shí)現(xiàn)對所述數(shù)據(jù)庫元素集合中的一個或多個元素的利用的測量。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)層應(yīng)用程序組件被映射到第一物理計(jì)算資源。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第一物理計(jì)算資源包括處理器、存儲器設(shè)備、物理存儲設(shè)備、硬盤、光盤、硬盤驅(qū)動器,以及寄存器中的一個或多個。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)層應(yīng)用程序組件被從所述第一物理計(jì)算資源重新映射到第二物理計(jì)算資源。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫對象包括模式、表、視圖、存儲過程、函數(shù)、觸發(fā)器、數(shù)據(jù)類型、索引、登錄、用戶、許可、策略、統(tǒng)計(jì)數(shù)據(jù)、主鍵、外鍵、默認(rèn)值, 以及檢查約束中的一個或多個。
12.—種部署數(shù)據(jù)層應(yīng)用程序組件的方法,所述方法包括創(chuàng)建(20 包含數(shù)據(jù)庫元素集合(404)的數(shù)據(jù)層應(yīng)用程序組件(DAC)模型(102),所述數(shù)據(jù)庫元素集合(404)包括與一個或多個數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù),其中與所述一個或多個數(shù)據(jù)庫對象有關(guān)的所述元數(shù)據(jù)包括所述數(shù)據(jù)庫對象中的每一個的標(biāo)識符(406)、可操作以操縱所述數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符008),以及與所述數(shù)據(jù)庫運(yùn)行時資源G10)的執(zhí)行有關(guān)的策略;基于所述DAC模型(102)來構(gòu)建(208) DAC包(120);將DAC類型(122)從所述DAC包(120)導(dǎo)入(2lO)到服務(wù)器結(jié)構(gòu)(126)中;以及部署012)所述DAC類型(122)以創(chuàng)建部署的DAC實(shí)例(124)。
13.如權(quán)利要求12所述的方法,其特征在于,還包括將所述DAC模型的表示保存為DAC 項(xiàng)目,并將所述DAC項(xiàng)目檢入源控制系統(tǒng)或源控制數(shù)據(jù)庫,以存儲所述DAC項(xiàng)目。
14.如權(quán)利要求12所述的方法,其特征在于,還包括在構(gòu)建所述DAC包之前編輯所述 DAC模型并驗(yàn)證所述DAC模型,在部署所述DAC實(shí)例之前配置所述DAC類型,以及關(guān)于物理計(jì)算資源的特定組來安裝所述DAC實(shí)例。
15.如權(quán)利要求12所述的方法,其特征在于,所述DAC實(shí)例包括屬性、部署模式、部署策略、結(jié)構(gòu)映射,以及數(shù)據(jù)。
全文摘要
公開了用于管理數(shù)據(jù)庫應(yīng)用程序的數(shù)據(jù)層應(yīng)用程序組件(DAC)和方法。根據(jù)一個特定實(shí)施例,DAC包括打包與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)的單個管理單元。與數(shù)據(jù)庫對象有關(guān)的元數(shù)據(jù)包括數(shù)據(jù)庫對象的標(biāo)識符,可操作以操縱數(shù)據(jù)庫對象的數(shù)據(jù)庫運(yùn)行時資源的數(shù)據(jù)庫運(yùn)行時資源標(biāo)識符,以及與數(shù)據(jù)庫運(yùn)行時資源的執(zhí)行有關(guān)的策略。
文檔編號G06F17/40GK102165445SQ200980138434
公開日2011年8月24日 申請日期2009年9月15日 優(yōu)先權(quán)日2008年9月26日
發(fā)明者C·D·卡森, K·范海寧, M·霍林斯沃思, O·巴哈特, P·瑟沙德瑞, R·哈欽森, S·博什拉, S·比切, S·韋爾克德卡 申請人:微軟公司