專利名稱::數(shù)據(jù)庫對(duì)象腳本生成方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明通常涉及計(jì)算機(jī)數(shù)據(jù)庫領(lǐng)域并且更加特別的涉及在關(guān)系數(shù)據(jù)庫中為復(fù)雜對(duì)象自動(dòng)生成腳本的領(lǐng)域。
背景技術(shù):
:結(jié)構(gòu)化查詢語言是美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)院(ANSI)用來與關(guān)系數(shù)據(jù)庫進(jìn)行通信的標(biāo)準(zhǔn)。SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句被用來執(zhí)行諸如從關(guān)系數(shù)據(jù)庫中刷新數(shù)據(jù)或檢索數(shù)據(jù)的任務(wù)。雖然很多數(shù)據(jù)庫系統(tǒng)使用SQL,其中的很多數(shù)據(jù)庫仍舊具有他們自己附加獨(dú)有的擴(kuò)展,所述擴(kuò)展通常只能在其自己的系統(tǒng)中使用。但是,標(biāo)準(zhǔn)SQL命令,例如”Select”,”Insert”,”Update”,”Delete”,”Create”,”Drop”仍舊能夠被用來實(shí)現(xiàn)獲得人們希望從關(guān)系數(shù)據(jù)庫中獲得的事務(wù)。關(guān)系數(shù)據(jù)庫通常被構(gòu)造成包含行和列的表。行和列交點(diǎn)或交點(diǎn)單元的數(shù)據(jù)的條目通常與一系列對(duì)數(shù)據(jù)的限制保持一致,所述限制被用于定義交點(diǎn)單元所允許的數(shù)據(jù)類型。與這種數(shù)據(jù)條目相伴隨的一個(gè)長(zhǎng)期的問題是對(duì)那些人們希望放入數(shù)據(jù)庫的大且復(fù)雜的對(duì)象缺少定義。對(duì)已使用的SQL數(shù)據(jù)類型的限制通常限制了那些能夠被輸入到關(guān)系數(shù)據(jù)庫例如SQL中的數(shù)據(jù)的類型。一個(gè)大的對(duì)象,如果放入SQL數(shù)據(jù)庫,將會(huì)使數(shù)據(jù)庫處理變慢或者使用例如存儲(chǔ)器和處理器時(shí)間的系統(tǒng)資源以獲得一個(gè)或多個(gè)龐大又復(fù)雜的對(duì)象。腳本查詢和在諸如SQL關(guān)系數(shù)據(jù)庫中利用對(duì)象是既浪費(fèi)時(shí)間又需要有較強(qiáng)的專業(yè)知識(shí)。這些腳本的作者為了在目標(biāo)關(guān)系數(shù)據(jù)庫中恰當(dāng)?shù)嘏c正確的元數(shù)據(jù)一起用具體例子說明(instantiate)對(duì)象,必須知道與其他對(duì)象相關(guān)聯(lián)的所述新且復(fù)雜對(duì)象的依賴關(guān)系。例如,這種腳本的專業(yè)知識(shí)可能會(huì)超出那些希望利用其關(guān)系數(shù)據(jù)庫以追蹤和查詢與其企業(yè)(business)相關(guān)的復(fù)雜對(duì)象的一般用戶的經(jīng)驗(yàn)。另一方面,系統(tǒng)管理員可以利用腳本來幫助維護(hù)關(guān)系數(shù)據(jù)庫。這些腳本動(dòng)作需要時(shí)間和管理去準(zhǔn)備和運(yùn)行。目前,為涉及復(fù)雜對(duì)象的關(guān)系數(shù)據(jù)庫自動(dòng)生成腳本,并不是很容易實(shí)現(xiàn)的。于是,對(duì)那些希望被引用并對(duì)SQL數(shù)據(jù)庫有所動(dòng)作的對(duì)象需要有一個(gè)統(tǒng)一的標(biāo)記(reference)。另外,對(duì)應(yīng)用和系統(tǒng)維護(hù)的工作來說,需要一種生成腳本的機(jī)制以方便在諸如SQL關(guān)系數(shù)據(jù)庫內(nèi)配置對(duì)象。本發(fā)明提出了上述已經(jīng)提到的需求并且利用多種系統(tǒng)、方法和技術(shù)解決了他們,所述多種系統(tǒng)、方法和技術(shù)不需要知道關(guān)系數(shù)據(jù)庫元數(shù)據(jù)的復(fù)雜結(jié)構(gòu)就能生成復(fù)雜的關(guān)聯(lián)樹和表并且修改他們以生成腳本。
發(fā)明內(nèi)容本發(fā)明包括關(guān)系數(shù)據(jù)庫的一個(gè)腳本器(scripter),所述腳本器能夠特別地應(yīng)用于一個(gè)SQL數(shù)據(jù)庫管理系統(tǒng)。多種獨(dú)立的軟件模塊或多種功能的串連輸入對(duì)象引用并輸出腳本。本發(fā)明的一個(gè)示例性部分或模塊從所傳入的一個(gè)或多個(gè)對(duì)象引用(OBJECTREFRENCE)生成分級(jí)對(duì)象樹。利用對(duì)象引用的復(fù)雜對(duì)象,可以使用統(tǒng)一資源名稱表示。所述模塊排除重復(fù)的對(duì)象標(biāo)記并產(chǎn)生一個(gè)關(guān)聯(lián)樹。所述模塊還能在樹被建立及完成之后提供機(jī)會(huì)編輯所述樹。另外的示例性模塊或部分從用戶或之前的模塊輸入一個(gè)等級(jí)關(guān)聯(lián)樹,并且生成一個(gè)從屬性列表(dependencylist)。從屬性列表是一個(gè)線性表,所述線性表表達(dá)了為滿足相關(guān)限制而利用的對(duì)象的生成順序。這個(gè)模塊還能在樹被建立及完成之后提供編輯從屬性列表的機(jī)會(huì)。另外的示例性模塊或部分從從屬性列表中生成腳本。所述從屬性列表可以是用戶生成的,或者他也可以是從前面的模塊輸入的。所述模塊在從屬性列表中例示(instantiate)對(duì)象,并且調(diào)用與對(duì)象相關(guān)的腳本方法。所述模塊提供給用戶或控制程序廣泛的靈活性以當(dāng)腳本正被產(chǎn)生及完成之后編輯腳本。前面的發(fā)明概述,以及后面對(duì)較佳實(shí)施例的詳細(xì)描述,當(dāng)與附圖相結(jié)合閱讀時(shí)將被更好的理解。為了闡述本發(fā)明的目的,在圖中示出了本發(fā)明的示例性結(jié)構(gòu);但是本發(fā)明不應(yīng)限于所述的特定方法及其中所公開的手段。圖1是顯示了本發(fā)明能夠被實(shí)施的一個(gè)方面的示例性計(jì)算環(huán)境的方塊圖;圖2描述了本發(fā)明能夠被實(shí)施的一個(gè)方面示例性、全面的流程圖;圖3描述了與本發(fā)明第一模塊或狀態(tài)相適應(yīng)的示例性流程圖;圖4描述了與本發(fā)明第二模塊或狀態(tài)相適應(yīng)的示例性流程圖;圖5描述了與本發(fā)明第三模塊或狀態(tài)相適應(yīng)的示例性流程圖;圖6描述了本發(fā)明一個(gè)實(shí)現(xiàn)的示例性靜態(tài)結(jié)構(gòu)圖。具體實(shí)施例方式概述本發(fā)明提供了在關(guān)系數(shù)據(jù)庫中為多種復(fù)雜對(duì)象自動(dòng)生成腳本。提供了一些技術(shù),其中從屬性列表被輸入到處理中并且反應(yīng)了多種對(duì)象間關(guān)系的從屬性列表或分級(jí)樹能夠被產(chǎn)生。從屬性列表或分級(jí)樹可以然后被輸入到處理的其他部分,其中分級(jí)樹被處理成一個(gè)有序的從屬性列表。從屬性列表之后可以被處理成一個(gè)能夠用來配置在一個(gè)特定目標(biāo)關(guān)系數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)庫對(duì)象的腳本。本發(fā)明的多種狀態(tài)和模塊可以被分別執(zhí)行或以串連順序執(zhí)行。示范性計(jì)算裝置圖1和下述討論,將用來提供一個(gè)對(duì)本發(fā)明所實(shí)施的合適的計(jì)算環(huán)境的簡(jiǎn)要的總的描述。然而,應(yīng)該明白,可以預(yù)料到各種計(jì)算對(duì)象和手持式、便攜式和其他計(jì)算裝置,能夠結(jié)合本發(fā)明一起使用。因此,雖然在下面描述了一種通用計(jì)算機(jī),但其并不限于一個(gè)例子,并且本發(fā)明還可以用其他計(jì)算裝置來實(shí)施,諸如具有網(wǎng)絡(luò)/總線互操作性和交互性的客戶端。因此,本發(fā)明可以在一種網(wǎng)絡(luò)主機(jī)服務(wù)的環(huán)境中實(shí)施,其中牽涉到很少或最小的客戶端資源,例如,一種客戶裝置僅僅起到網(wǎng)絡(luò)/總線接口的作用的網(wǎng)絡(luò)環(huán)境,諸如一個(gè)置于設(shè)備中的對(duì)象,或者其他計(jì)算裝置和對(duì)象。其實(shí),根據(jù)本發(fā)明,無論數(shù)據(jù)存于何處或者對(duì)哪個(gè)數(shù)據(jù)進(jìn)行檢索,都是合意的、或合適的操作環(huán)境。雖然不是必需的,本發(fā)明可以通過一個(gè)操作系統(tǒng)來實(shí)施,以供裝置或?qū)ο蟮姆?wù)的開發(fā)者使用,和/或可以包括在根據(jù)本發(fā)明操作的應(yīng)用軟件中。在計(jì)算機(jī)可執(zhí)行指令的通常情況下,軟件可被描述成,諸如程序模塊,其可由一個(gè)或多個(gè)諸如客戶端工作站、服務(wù)器或其他裝置這樣的計(jì)算機(jī)執(zhí)行。通常,程序模塊包括例行程序、程序、對(duì)象、組成部分(component),數(shù)據(jù)結(jié)構(gòu)等,執(zhí)行特定任務(wù)或?qū)嵤┨囟ǖ某橄髷?shù)據(jù)類型。典型地,可以如在各種實(shí)施例中所描述的那樣,合并或分散程序模塊的功能。而且,本領(lǐng)域中的技術(shù)人員將會(huì)意識(shí)到,本發(fā)明可以用其他計(jì)算機(jī)配置來實(shí)施。適于本發(fā)明使用的其他公知的計(jì)算系統(tǒng)、環(huán)境、和/或配置包括,但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)柜員機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程的客戶設(shè)備、網(wǎng)絡(luò)PC、儀表、照明器材、環(huán)境控制元件、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明還可以在分布式計(jì)算環(huán)境中實(shí)施,其中所述任務(wù)由遠(yuǎn)程處理裝置來執(zhí)行,該遠(yuǎn)程處理裝置經(jīng)由通信網(wǎng)絡(luò)/總線或其他傳輸介質(zhì)而被連接。在分布式計(jì)算環(huán)境中,程序模塊可以存放于包括存儲(chǔ)器存儲(chǔ)裝置的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)上、和可以輪流起服務(wù)器節(jié)點(diǎn)作用的客戶端節(jié)點(diǎn)。圖1,如此示出了一個(gè)能實(shí)施本發(fā)明的適于計(jì)算系統(tǒng)環(huán)境100的例子,雖然如上所闡明的,計(jì)算系統(tǒng)環(huán)境100只是適于計(jì)算系統(tǒng)的一個(gè)例子,并不是想要暗示關(guān)于本發(fā)明的功能或使用的范圍。也不應(yīng)把計(jì)算環(huán)境100解釋成對(duì)關(guān)于任一示例性操作環(huán)境100中所示出的部件或其組合的具備依賴性和相關(guān)要求。參照?qǐng)D1,用于實(shí)施本發(fā)明的一個(gè)示例性系統(tǒng),包括一個(gè)作為計(jì)算機(jī)系統(tǒng)110的通用計(jì)算裝置。計(jì)算機(jī)系統(tǒng)110的部件包括,但是不限于,一個(gè)處理器單元120、一個(gè)系統(tǒng)存儲(chǔ)器130、和一個(gè)各種系統(tǒng)部件的系統(tǒng)總線121,其中該總線包括把系統(tǒng)存儲(chǔ)器連至處理器單元120。所述系統(tǒng)總線121可以是下述幾種總線結(jié)構(gòu)中的一種,包括利用各種總線體系結(jié)構(gòu)中的任一一種的局部總線和存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線。作為例子,而不限于,這種體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線、和周邊元件擴(kuò)展接口(PCI)總線(還通稱為Mezzanine總線)。計(jì)算機(jī)系統(tǒng)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算可讀介質(zhì)可以是任一可用介質(zhì),其能夠被計(jì)算機(jī)系統(tǒng)110訪問并包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為例子,而不限于,計(jì)算機(jī)可讀介質(zhì)可以由計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)組成。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,以任一方法或技術(shù)為諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)這樣的信息存儲(chǔ)所提供的,易失性和非易失性、可移動(dòng)和不可移動(dòng)的介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,而不限于,隨機(jī)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM)、閃速存儲(chǔ)器或其他存儲(chǔ)器技術(shù)、只讀光盤(CDROM)、可重寫光盤(CDRW)、數(shù)字通用光盤(DVD)、或其他光盤存儲(chǔ)介質(zhì)、磁帶盒(magneticcassette)、磁帶、磁盤介質(zhì)或其他磁性存儲(chǔ)裝置、或任一其他能被用來存儲(chǔ)想要的信息和能被計(jì)算機(jī)系統(tǒng)110訪問的介質(zhì)。通信介質(zhì),通常包括計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他諸如載波這樣的已調(diào)數(shù)據(jù)信號(hào)的數(shù)據(jù),或其他傳輸裝置,并包括任一信息傳遞介質(zhì)。所述術(shù)語“已調(diào)數(shù)據(jù)信號(hào)”,指一種這樣的信號(hào),即,其具有一個(gè)或多個(gè)已按照該信號(hào)中的編碼信息的這種方式而被改變或設(shè)定的特征。作為例子,而不限于,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接的有線連接這樣的有線介質(zhì),和諸如聲音、RF(射頻)、紅外和其他無線介質(zhì)這樣的無線介質(zhì)。任一上述的組合還應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍中。系統(tǒng)存儲(chǔ)器130包括作為易失性和/或非易失性存儲(chǔ)器的計(jì)算機(jī)存儲(chǔ)介質(zhì),諸如只讀存儲(chǔ)器(ROM)131和隨機(jī)存儲(chǔ)器(RAM)132。基本輸入/輸出系統(tǒng)133(BIOS),通常存于ROM131中,其含有有助于在計(jì)算機(jī)系統(tǒng)110內(nèi)的元件之間傳輸信息的基本例行程序,諸如在啟動(dòng)期間。RAM132通常含有被直接訪問和/或馬上通過處理單元120而其作用的數(shù)據(jù)和/或程序模塊。作為例子,而不限于,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136、和程序數(shù)據(jù)137。計(jì)算機(jī)系統(tǒng)110還可以包括其他可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)存儲(chǔ)器介質(zhì)。只為了舉例,圖1示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀或?qū)懙挠脖P驅(qū)動(dòng)器141,對(duì)可移動(dòng)、非易失性磁盤152進(jìn)行讀或?qū)懙拇疟P驅(qū)動(dòng)器151,對(duì)諸如CDROM、CDRW、DVD或其他光介質(zhì)這樣的可移動(dòng)、非易失性光盤156進(jìn)行讀或?qū)懙墓獗P驅(qū)動(dòng)器155。其他能用于示例性操作環(huán)境的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)器介質(zhì)包括,而不限于,盒式磁帶、閃速存儲(chǔ)卡、數(shù)字通用光盤、數(shù)字視頻磁帶、固態(tài)RAM、固態(tài)ROM、等等。所述硬盤驅(qū)動(dòng)器141通常被經(jīng)由諸如接口140這樣的不可移動(dòng)的存儲(chǔ)器接口連至系統(tǒng)總線121,以及磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常由諸如接口150這樣的可移動(dòng)的存儲(chǔ)器接口連至系統(tǒng)總線121。所述驅(qū)動(dòng)器和其在上面討論過并在圖1中示出的相連的計(jì)算機(jī)存儲(chǔ)介質(zhì),為計(jì)算機(jī)系統(tǒng)110提供了機(jī)器可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的的存儲(chǔ)。在圖1中,例如,硬盤驅(qū)動(dòng)器141被示出為存儲(chǔ)有操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146、和程序數(shù)據(jù)147。注意到,這些部件能夠和操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136、以及程序數(shù)據(jù)137相同或不相同。此處,給出了不同標(biāo)號(hào)的操組系統(tǒng)144、應(yīng)用程序145、其他程序模塊146、以及程序數(shù)據(jù)147,以最小限度地說明他們是不同的副本。用戶可以通過諸如鍵盤162和指示裝置161這樣的輸入裝置,把命令和信息輸入到計(jì)算機(jī)系統(tǒng)110,其中所述指示裝置161通常被稱為鼠標(biāo)、軌跡球、或觸摸板。其他輸入裝置(未示出)可以包括一個(gè)麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線(satellitedish)、掃描儀、或類似的裝置。這些和其他輸入裝置,通常經(jīng)由連至系統(tǒng)總線121的用戶輸入接口160而被連至處理單元120,但是也可被諸如并行端口、游戲端口或通用串行總線(USB)這樣的其他接口和總線結(jié)構(gòu)連接。監(jiān)視器191或其他類型的顯示裝置,也被經(jīng)由一諸如視頻接口190這樣的接口連至系統(tǒng)總線121上,所述視頻接口190可以反過來與視頻存儲(chǔ)器(未示出)進(jìn)行通信。除了監(jiān)視器191之外,計(jì)算機(jī)系統(tǒng)還可以包括其他外部輸出裝置,諸如能夠通過一個(gè)輸出外設(shè)接口195而被連接的揚(yáng)聲器197和打印機(jī)196。計(jì)算機(jī)系統(tǒng)110,可以利用到一個(gè)或多個(gè)諸如遠(yuǎn)程計(jì)算機(jī)180這樣的遠(yuǎn)程計(jì)算機(jī)上的邏輯連接,在網(wǎng)絡(luò)或分布式環(huán)境中運(yùn)行。所述遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、等同裝置或其他公用網(wǎng)絡(luò)節(jié)點(diǎn),并典型地包括很多或全部在上面關(guān)于計(jì)算機(jī)系統(tǒng)110而描述的元件,雖然在圖1中僅僅示出了存儲(chǔ)器存儲(chǔ)裝置181。在圖1中所描繪的邏輯連接,包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但是還可以包括其他網(wǎng)絡(luò)/總線。這種網(wǎng)絡(luò)環(huán)境在家里、辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)內(nèi)是常見的。一旦在LAN網(wǎng)絡(luò)環(huán)境中被采用,計(jì)算機(jī)系統(tǒng)110就被通過一網(wǎng)絡(luò)接口或適配器170連至LAN171。一旦在WAN網(wǎng)絡(luò)環(huán)境中被采用,計(jì)算機(jī)系統(tǒng)110就會(huì)典型地包括調(diào)制解調(diào)器172或其他用于在諸如因特網(wǎng)這樣的WAN173上建立通信的裝置。所述調(diào)制解調(diào)器172,可以是外部的也可以是內(nèi)部的,其經(jīng)由用戶輸入接口160或其他合適的裝置而被連至系統(tǒng)總線121上。在網(wǎng)絡(luò)環(huán)境中,在關(guān)于計(jì)算機(jī)系統(tǒng)110所描述的程序模塊、或其部分,可以存于遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置內(nèi)。作為例子,而不限于,圖1示出了作為駐留在存儲(chǔ)器裝置181中的遠(yuǎn)程應(yīng)用程序185。應(yīng)該意識(shí)到,所示出的網(wǎng)絡(luò)連接,是示例性的,還可以采用其他在計(jì)算機(jī)之間建立通信連接的裝置。已經(jīng)并且正在根據(jù)個(gè)人計(jì)算和因特網(wǎng)的集中,研發(fā)各種分布式計(jì)算結(jié)構(gòu)。對(duì)個(gè)人和相似的商業(yè)用戶,提供了用于應(yīng)用程序和計(jì)算裝置的無縫地能共同操作的和Web啟用接口,這使面向Web瀏覽器或網(wǎng)絡(luò)的計(jì)算活動(dòng)增加了。例如,MICROSOFT的.NETTM平臺(tái),可從微軟公司購(gòu)買(地址華盛頓州雷蒙德市一微軟路(OneMicrosoftWay,Redmond,Washington)郵編98052),包括服務(wù)器,模塊構(gòu)建服務(wù)(building-blockservice),諸如基于網(wǎng)頁的數(shù)據(jù)存儲(chǔ),和可下載裝置軟件。雖然在此結(jié)合了駐留在計(jì)算裝置上的軟件對(duì)示例性實(shí)施例進(jìn)行了描述時(shí),但是本發(fā)明的一個(gè)或多個(gè)部分,還可以通過操作系統(tǒng)、應(yīng)用程序接口(API)或在協(xié)處理器、顯示裝置和請(qǐng)求對(duì)象之間的“中間人”對(duì)象來實(shí)施,以便根據(jù)本發(fā)明的操作可以被其執(zhí)行,由所有的.NETTM語言和服務(wù)支持或訪問,并且也在其他分布式計(jì)算結(jié)構(gòu)中。本發(fā)明的示范性實(shí)施例關(guān)系數(shù)據(jù)庫管理對(duì)象腳本器為對(duì)象生成腳本。在一個(gè)實(shí)施例中,對(duì)象在SQL數(shù)據(jù)庫中被實(shí)現(xiàn)。本發(fā)明可以按照其一般適用性被描述也可以根據(jù)所述SQL環(huán)境的實(shí)施例被描述。所述腳本的一個(gè)例子是Transact-SQL腳本。腳本編寫允許系統(tǒng)管理作業(yè)的自動(dòng)操作包括SQL數(shù)據(jù)庫中的對(duì)象。腳本器對(duì)象(scripterobject)是存在于所述SQL管理對(duì)象的名字空間中的對(duì)象,但是沒有依賴于使用腳本器的SQL管理對(duì)象。腳本器可以利用兩個(gè)操作建立(creat)和移除(drop)操作,所述操作由每個(gè)實(shí)例類執(zhí)行。因此,為了給建立或刪除SQL數(shù)據(jù)庫中的所述對(duì)象生成腳本文本,生成實(shí)例對(duì)象僅需對(duì)其自身的實(shí)例腳本編寫負(fù)責(zé)。作為結(jié)果,腳本編輯器對(duì)剩余的功能性操作負(fù)責(zé),所述功能性操作包括尋找相關(guān)性,輸出腳本到存儲(chǔ)器,文件或顯示器,調(diào)用所述實(shí)例對(duì)象以對(duì)上述對(duì)象編寫腳本,和控制編寫腳本操作的環(huán)境及進(jìn)程。一個(gè)腳本器對(duì)象模型可以部分的用于本發(fā)明中。腳本器對(duì)象模型是編寫腳本的一個(gè)進(jìn)入點(diǎn)。所述對(duì)象模塊持有編寫腳本操作的語境。所述對(duì)象模型可以利用統(tǒng)一資源名稱被唯一的識(shí)別出來。例如,一個(gè)擁有數(shù)據(jù)庫名稱“pub”的SQL管理對(duì)象可以被同一資源名稱唯一地指示,其中所述數(shù)據(jù)庫包含有被“dbo”擁有的表“作者(authors)”Server/Database[@Name=‘pubs’]/table[@Name=‘a(chǎn)uthors’andschema=‘dbo’]對(duì)統(tǒng)一資源名稱的利用提供了一種唯一識(shí)別對(duì)象的標(biāo)準(zhǔn)格式并且與其他利用可允許的靈活度的標(biāo)準(zhǔn)相一致并且在本發(fā)明中的應(yīng)用中更進(jìn)一步擴(kuò)充。腳本器在大量獨(dú)特階段進(jìn)行操作(phase),所述階段允許對(duì)底層數(shù)據(jù)結(jié)構(gòu)進(jìn)行中間層的操作。這些階段(phase)可以整體地執(zhí)行,允許最小限度的操作;或可以被分別執(zhí)行以給修訂底層數(shù)據(jù)結(jié)構(gòu)最大的自由。腳本器執(zhí)行的示例性階段發(fā)現(xiàn)其從屬性(dependency),生成從屬性列表,并從從屬性列表中生成腳本。圖2是一個(gè)結(jié)構(gòu)圖,顯示了本發(fā)明示例性階段之間的關(guān)系以及這些階段數(shù)據(jù)的流動(dòng)和用戶或其他控制程序。用戶程序260能夠與本發(fā)明的示例性且獨(dú)特的階段互相影響發(fā)現(xiàn),生成表,并且腳本化生成。在每一個(gè)階段用戶程序提供對(duì)特定操作的輸入。在每一個(gè)階段返回一個(gè)結(jié)果,所屬結(jié)果能夠被操作并被輸入到處理的下一個(gè)階段。在每一個(gè)階段事件被發(fā)送到用戶過程,如果其對(duì)這些事件贊成,就提供此處理中過程的相關(guān)信息。這個(gè)事件機(jī)制,通過允許用戶在這些事件上對(duì)處理作出反應(yīng)并與處理相互影響,來允許用戶改變腳本器對(duì)每一個(gè)對(duì)象的行為。這個(gè)腳本選項(xiàng),通過腳本生成的每個(gè)階段,為腳本輸出提供完全的控制。希望每一個(gè)階段都是斷開的,并且每個(gè)階段的輸入不必需要求由腳本器生成。用戶程序根據(jù)其自身的內(nèi)部算法能夠生成其自身的數(shù)據(jù)結(jié)構(gòu),并且將這些數(shù)據(jù)結(jié)構(gòu)提供給腳本器作為輸入。于是,腳本器階段能夠被看作有三個(gè)獨(dú)立的部分。返回到圖2,發(fā)現(xiàn)階段從用戶程序260獲得對(duì)象引用202來對(duì)關(guān)聯(lián)發(fā)現(xiàn)機(jī)制210進(jìn)行初始化。對(duì)象可以使用統(tǒng)一資源名稱被標(biāo)記。關(guān)聯(lián)數(shù)據(jù)和實(shí)例數(shù)據(jù)(元數(shù)據(jù))204從系統(tǒng)中被調(diào)回以幫助所述發(fā)現(xiàn)處理。特別地,關(guān)聯(lián)數(shù)據(jù)可以通過在服務(wù)器和系統(tǒng)目錄(systemcatalog)270中的關(guān)聯(lián)檢索被定位。應(yīng)該注意,關(guān)聯(lián)的粒度(granularity)也決定了從屬性發(fā)現(xiàn)操作(dependencydiscoveryoperation)的粒度。一旦使用關(guān)聯(lián)查找和發(fā)現(xiàn)或偵測(cè)算法發(fā)現(xiàn)兩個(gè)或多個(gè)對(duì)象間的關(guān)連,對(duì)象關(guān)系數(shù)據(jù)208就進(jìn)入一個(gè)相關(guān)樹212。所述處理返回214到發(fā)現(xiàn)機(jī)制210來繼續(xù)為相關(guān)樹212生成條目。在所述處理的最后,一個(gè)相關(guān)樹212被生成,并且對(duì)用戶程序260是可用的。關(guān)聯(lián)查找及偵測(cè)技術(shù)將以其操作的形式被描述。另外,該算法描述為生成父對(duì)象圖表,生成原始對(duì)象圖表,并隨后生成子對(duì)象圖表。所述生成圖表實(shí)質(zhì)上就是相關(guān)樹的結(jié)構(gòu)。最初,關(guān)聯(lián)發(fā)現(xiàn)機(jī)制210看到對(duì)象引用并且將對(duì)象作為枚舉對(duì)象調(diào)回。在此處并不需要真正的實(shí)例,因此對(duì)象本身并沒有被調(diào)回;只有對(duì)象的標(biāo)記被激活。所述對(duì)象被加入已知的對(duì)象表。關(guān)聯(lián)發(fā)現(xiàn)機(jī)制為加入的對(duì)象尋找每一個(gè)不在已知對(duì)象表中的父親。關(guān)聯(lián)發(fā)現(xiàn)機(jī)制之后可以調(diào)回父對(duì)象并且將其加入已知的對(duì)象表。當(dāng)最高行的父親被偵測(cè)到時(shí),最高行的父親就被加入到相關(guān)樹中,所述相關(guān)樹是分級(jí)樹。關(guān)聯(lián)發(fā)現(xiàn)機(jī)制隨后在已知的對(duì)象表中向下尋找所有的子對(duì)象。上述過程向相關(guān)樹中添加原始對(duì)象,同時(shí)添加已找到的父親的兒子,原始對(duì)象,以及兒子和孫子對(duì)象。此遞歸算法生成正確的相關(guān)順序。圖2中的階段2包括了從屬性列表的生成。從屬性列表可以從階段1(216)得到或其可以通過面向用戶程序的接口218獲得。無論怎樣,從屬性列表被接收并且表生成機(jī)制220生成對(duì)象表230的任務(wù)被激活。表生成機(jī)制220為相關(guān)樹212和實(shí)例數(shù)據(jù)(元數(shù)據(jù))222提供接口224,226以生成一個(gè)對(duì)象表230的條目228。一旦對(duì)象和其相關(guān)數(shù)據(jù)被被偵測(cè)到,就可產(chǎn)生對(duì)象表?xiàng)l目。所述處理返回以從相關(guān)樹讀出附加項(xiàng)目(item)并且不斷生成對(duì)象表直到相關(guān)樹元素都被遍歷完。當(dāng)諸如對(duì)象表?xiàng)l目之類的事件被發(fā)現(xiàn),事件229就被生成為用戶程序以編輯對(duì)象表的方式來操作所述處理提供一個(gè)機(jī)會(huì)。在所述處理的最后,對(duì)象表230被生成并且使232對(duì)用戶程序260來說是可以得到的,同時(shí)可以被用戶程序進(jìn)行全面編輯。圖2的第3階段通過腳本生成機(jī)制240生成腳本(例如Transact-SQL腳本),所述腳本生成機(jī)制利用對(duì)象表和腳本選項(xiàng)234。對(duì)象表可能與早前的階段232生成的對(duì)象表相同,或者可以是通過用戶程序260的接口234接收到的。無論怎樣,腳本生成機(jī)制240獲得被用戶程序選擇或默認(rèn)的腳本選項(xiàng)234以及實(shí)例數(shù)據(jù)(元數(shù)據(jù))236。當(dāng)對(duì)象表230被處理238,242時(shí),腳本生成機(jī)制240可以生成腳本條目244。當(dāng)腳本250被生成時(shí),諸如新條目和編輯已生成腳本的事件252就能夠被呈現(xiàn)給用戶程序260。最后,對(duì)象表230被完全處理并且生成了完全腳本250。為了后續(xù)處理,所述處理隨后能夠發(fā)送腳本254到用戶程序或發(fā)送給用戶或一個(gè)等價(jià)的接口。如圖2所示,對(duì)腳本的全部處理可看作是以獲得對(duì)象引用202開始并且以生成腳本254結(jié)束的一個(gè)過程。另外,所述處理也可以被看作是能夠被串連的多個(gè)獨(dú)立的處理。圖3、4、和5分別描述了階段1、2和3的單獨(dú)處理。圖3是本發(fā)明關(guān)聯(lián)發(fā)現(xiàn)階段的方法300的一個(gè)示例性流程圖。發(fā)現(xiàn)關(guān)聯(lián)階段從通過所述處理的單個(gè)或多個(gè)對(duì)象引用中生成一個(gè)分級(jí)對(duì)象樹(圖graph)。所述處理以獲得一個(gè)或多個(gè)與對(duì)象相關(guān)的對(duì)象引用310開始,所述對(duì)象是希望在諸如SQL數(shù)據(jù)庫的關(guān)連數(shù)據(jù)庫中被用到的。所述處理隨后轉(zhuǎn)移為為偵測(cè)相關(guān)于對(duì)象引用的相關(guān)性而進(jìn)行的查詢。關(guān)連數(shù)據(jù)被定義成涉及對(duì)象間相關(guān)性的信息。例如,對(duì)SQL的觀察(view)依賴于所存在的從屬性列表。反過來說,從屬性列表對(duì)于SQL觀察具備依賴。作為附加,描述對(duì)象實(shí)例的實(shí)例數(shù)據(jù),例如,一個(gè)實(shí)例或元數(shù)據(jù)表,可以作為320中揭示的關(guān)系相關(guān)數(shù)據(jù)的一部分。當(dāng)偵測(cè)到相關(guān)性時(shí),在330生成一個(gè)相關(guān)或分級(jí)樹,代表了相關(guān)數(shù)據(jù)和關(guān)聯(lián)的對(duì)象。由于對(duì)復(fù)雜等級(jí)編寫腳本時(shí)引用(reference)同一個(gè)對(duì)象是可能的,因此,用來生成分級(jí)樹或圖的算法避免了重復(fù)340。這些被一次或多次參考的對(duì)象可以生成腳本。相關(guān)樹或分級(jí)樹可以包括父親、第一兒子、下一個(gè)兄弟、孫子、和曾孫類型的相關(guān)結(jié)構(gòu),例如。當(dāng)相關(guān)性被偵測(cè)時(shí),所述處理檢測(cè)相關(guān)樹是否完成。如果沒有,處理可以允許編輯對(duì)象360。如果不需要編輯360,所述處理通過轉(zhuǎn)向下一個(gè)對(duì)象引用390而繼續(xù)。如果需要編輯360,就能夠編輯樹370。例如,對(duì)象的刪除不僅僅能導(dǎo)致刪除一個(gè)對(duì)象,還能導(dǎo)致刪除所有在其關(guān)系分支上的后繼的子對(duì)象。這允許用戶在對(duì)象被加入到最終的圖中之前,處理或過濾對(duì)象。當(dāng)完成編輯之后,所述處理轉(zhuǎn)向下一個(gè)對(duì)象引用380,并且繼續(xù)查找相關(guān)數(shù)據(jù)320。如果既沒有控制過程也沒有用戶需要對(duì)象編輯,關(guān)聯(lián)發(fā)現(xiàn)300繼續(xù)下一個(gè)對(duì)象引用并且尋找相關(guān)數(shù)據(jù)320摘要(resume)。最后,從屬性樹或分級(jí)樹被完成350并且從屬性樹作為一個(gè)輸出399對(duì)后續(xù)過程來說是可得到的或作為用戶輸出。圖4是本發(fā)明的示例性相關(guān)發(fā)現(xiàn)方法400的步進(jìn)階段的流程圖。所述從屬性步進(jìn)階段從已進(jìn)入所述處理的從屬性樹生成從屬性的線性表格。所述處理由接收一個(gè)從屬性樹410所謂處理的輸入而開始。這一輸入可以從諸如圖3中的輸出399獲得,或者可以由用戶或一個(gè)處理程序分別輸入。返回圖4,從屬性發(fā)現(xiàn)步進(jìn)方法400繼續(xù)對(duì)從從屬性樹中導(dǎo)出的關(guān)系從屬性進(jìn)行偵測(cè)。當(dāng)從屬性被偵測(cè)到,所述處理生成一個(gè)從屬性列表?xiàng)l目430。從屬性列表較佳地是一個(gè)線性表,所述線性表列出了為了滿足從屬性限定而生成的對(duì)象的順序。例如,一個(gè)用戶定義的數(shù)據(jù)類型必須作為對(duì)象,可能是元數(shù)據(jù),的一部分存在,這優(yōu)先于依賴所述對(duì)象或用戶數(shù)據(jù)類型。假設(shè)所述處理第一次通過440時(shí)并沒有完成,所述處理400允許進(jìn)行編輯來生成一個(gè)表。如果所述表將被編輯450,那么所述編輯就能夠在460被允許,其中從屬性列表中被標(biāo)記的對(duì)象將被移除或改變。當(dāng)編輯完成后,所述處理繼續(xù)至從屬性樹470的下一個(gè)對(duì)象而對(duì)關(guān)系從屬性的偵測(cè)繼續(xù)至420。如果并不需要一個(gè)編輯,450,那么就通知所述處理過程480并且程序?qū)ο乱粋€(gè)樹對(duì)象作索引并且繼續(xù)偵測(cè)關(guān)系從屬性420。最后,反復(fù)進(jìn)行所述處理直到所述樹被完全遍歷并且對(duì)從屬性列表?xiàng)l目的生成過程完成440。從屬性列表可以隨后被獲得或被一個(gè)后續(xù)過程或一個(gè)給用戶的輸出獲得499。圖5本發(fā)明示例性腳本階段方法500的流程圖。所述腳本階段從輸入到所述過程的從屬性列表生成一個(gè)腳本,例如Transact-SQL腳本。所述處理以獲得從屬性列表作為處理的輸入而開始。這一輸入可能從一個(gè)諸如圖4的輸出中獲得,也可以從分別由用戶或一個(gè)處理過程輸入。返回到圖4,腳本階段500根據(jù)從屬性列表對(duì)象的標(biāo)記實(shí)例520繼續(xù)進(jìn)行。接著,根據(jù)對(duì)象引用530作出一個(gè)關(guān)于腳本的對(duì)象引用調(diào)用。根據(jù)調(diào)用的結(jié)果返回的腳本,當(dāng)所述處理反復(fù)進(jìn)行的時(shí)候,所述腳本也進(jìn)行積累(accumulate)。假設(shè)所述處理沒有完成550,處理500允許對(duì)腳本進(jìn)行編輯560。如果需要編輯,用戶或其他控制過程可以編輯腳本570并且然后繼續(xù)進(jìn)行從屬性列表580的下一個(gè)對(duì)象,允許下一個(gè)對(duì)象引用520的下一個(gè)實(shí)例。如果不需要編輯560,一個(gè)處理通知被通知給控制處理或用戶590并且處理500繼續(xù)到下一個(gè)對(duì)象引用的實(shí)例。最后,所述處理遍歷所有在從屬性列表中的對(duì)象并且所述處理完成550。之后,被積累的腳本對(duì)于后續(xù)過程是可以獲得的或作為給用戶的輸出也是可以獲得的。應(yīng)該注意,不偏離本發(fā)明意圖,圖3、4和5中的處理是可以修改成包括或不包括在任何一點(diǎn)的通知處理或在處理的任何一點(diǎn)進(jìn)行編輯。例如,在圖5中,不偏離本發(fā)明,一個(gè)腳本過程控制點(diǎn)可以被放在腳本積累器(scriptaccumulator)寫之后,或者當(dāng)完成了檢查550之后,或者在編輯570之后,或者在可獲得腳本595之后。這樣不超過本發(fā)明精神的可選擇控制點(diǎn)的改變與圖3、4、5中的流程圖的應(yīng)用是相等的。當(dāng)前發(fā)明的一個(gè)實(shí)施例以圖6中的一個(gè)統(tǒng)一模型化語言(uniformmodelinglanguage(UML))表示的結(jié)構(gòu)來說明。UML圖表600用示意圖描述了在對(duì)象腳本編寫器模式中的每一個(gè)類。這個(gè)實(shí)施例假設(shè)其被應(yīng)用在一個(gè)SQL數(shù)據(jù)庫中。從屬性遍歷器(dependencywalker)610提供了能夠發(fā)現(xiàn)在SQL服務(wù)器數(shù)據(jù)庫中的類之間的相關(guān)性及關(guān)系的功能。對(duì)于腳本器類這是一個(gè)基本的類。相關(guān)遍歷器610使用過濾器代表(filterdelegate)612和一個(gè)進(jìn)展報(bào)告代表(progressreportdelegate)614。過濾器代表612是一個(gè)事件,所述事件允許對(duì)在發(fā)現(xiàn)階段找到的類進(jìn)行改變和/拒絕。進(jìn)展報(bào)告代表614是一個(gè)事件,所述事件提供有關(guān)相關(guān)性和/或?qū)⒈揪帉戨A段過程的處理信息。腳本器620是對(duì)終端用戶來說是揭示腳本編寫功能的主要的腳本編寫類。腳本器620使用過程報(bào)告代表614和錯(cuò)誤事件代表(erroreventdelegate)624。腳本選擇622是一個(gè)允許改變腳本器620的動(dòng)作的類。腳本選擇622作為腳本器620的類被揭示。但是,腳本選擇類622能夠獨(dú)立的作為實(shí)例,這允許這一類作為一個(gè)獨(dú)立類的腳本編寫方法的一個(gè)變量通過。相關(guān)節(jié)點(diǎn)類630包括URN作為對(duì)象引用。相關(guān)節(jié)點(diǎn)630類對(duì)所有從屬性樹和表類來說是一個(gè)基礎(chǔ)類。相關(guān)樹節(jié)點(diǎn)類632是一個(gè)含有父親和兒子節(jié)點(diǎn)信息的類。其擴(kuò)大了相關(guān)節(jié)點(diǎn)類630。相關(guān)樹類634包括腳本器關(guān)系。這一類可以擴(kuò)充相關(guān)樹節(jié)點(diǎn)類632。所述相關(guān)樹類634作為腳本器620性質(zhì)被揭示。數(shù)組表640是NET結(jié)構(gòu)的一個(gè)標(biāo)準(zhǔn)類,所述表能夠在線性表的0-n類中保存標(biāo)記。數(shù)組表類是作為從屬性列表類642基礎(chǔ)類的。相關(guān)標(biāo)類在線性表中642保存有從屬性列表節(jié)點(diǎn)644的類。他被用于從屬性列表642并且作為腳本器類620的一個(gè)屬性被揭示。從屬性列表節(jié)點(diǎn)633包括有對(duì)象是否是原始列表(例如,根對(duì)象)的信息。它擴(kuò)展了相關(guān)節(jié)點(diǎn)類630。根據(jù)本發(fā)明的一個(gè)實(shí)施例,腳本器可以有在操作和應(yīng)用上的靈活性。圖2的處理也可以使用一個(gè)過濾器來完成。在第2和第3階段可以調(diào)用所述過濾器,在這些階段允許對(duì)象被轉(zhuǎn)移或改變。所述腳本生成器可以執(zhí)行一個(gè)能夠被利用排除對(duì)象(包括兒子或更低層次的對(duì)象)的性質(zhì)。此外,在腳本階段被更改的對(duì)象也可以包括這些更改而被編寫腳本。如果在對(duì)象中可以的話,通過更改名稱屬性可以改變對(duì)象的名字。所述對(duì)象并不必須維持這一目的。如果需要,所述圖通過設(shè)置圖的屬性就能夠被更改,如果在對(duì)象中可以的話??梢栽O(shè)置一個(gè)腳本錯(cuò)誤事件來接收在腳本生成階段發(fā)生的錯(cuò)誤。通過允許一個(gè)當(dāng)錯(cuò)誤發(fā)生時(shí)繼續(xù)的選項(xiàng)來期待當(dāng)錯(cuò)誤發(fā)生時(shí)(例如,當(dāng)一個(gè)對(duì)象在服務(wù)器中不能被找到)繼續(xù)。系統(tǒng)對(duì)象可以被編寫腳本以允許用戶基于系統(tǒng)對(duì)象的結(jié)構(gòu)生成新的(非系統(tǒng)的)對(duì)象。下列的腳本規(guī)則可以適用于系統(tǒng)對(duì)象。(1)用戶應(yīng)該被允許傳遞一個(gè)系統(tǒng)對(duì)象到腳本器并且生成一個(gè)腳本。(2)由于服務(wù)器可能不允許生成系統(tǒng)對(duì)象,因此沒有事先修改的腳本是不能夠在服務(wù)器上執(zhí)行的;并且(3)如果用戶傳遞了多個(gè)對(duì)象并且其中一個(gè)對(duì)象是系統(tǒng)對(duì)象,所屬系統(tǒng)對(duì)象是被允許的。如果在發(fā)現(xiàn)階段偵測(cè)到一個(gè)系統(tǒng)對(duì)象,可以選擇一個(gè)選項(xiàng)來停止腳本編寫。當(dāng)對(duì)一個(gè)完整的數(shù)據(jù)庫或者包括相關(guān)性的大量的對(duì)象編寫腳本時(shí)是很重要的。每一次,都利用不同的腳本操作對(duì)一個(gè)或多個(gè)對(duì)象編寫腳本??蛇x擇的,一個(gè)過濾功能能夠被傳遞以利用其來過濾統(tǒng)一資源名稱,所述統(tǒng)一資源名稱被用于唯一的識(shí)別對(duì)象。在發(fā)現(xiàn)階段(例如圖2中階段1)當(dāng)一個(gè)對(duì)象被加入相關(guān)樹時(shí),所述過濾器被調(diào)用。對(duì)于用戶化目的來說這是很有用的。一個(gè)過濾對(duì)象和所有其關(guān)聯(lián)都不會(huì)被編寫腳本。在另一個(gè)實(shí)施例,提供腳本選項(xiàng)作為本發(fā)明的一部分。這些選項(xiàng)允許用戶或控制程序,例如一個(gè)執(zhí)行程序或一個(gè)應(yīng)用程序,來對(duì)一個(gè)腳本過程行使控制。下面說明了一些選項(xiàng)腳本輸出格式選項(xiàng)腳本器選項(xiàng)描述AppendToFile附加在標(biāo)明的輸出文件上。缺省的,腳本方法重寫已知文件。ANSIToFile利用多字節(jié)特征生成腳本文件Drops生成Transact-SQL來移走已經(jīng)標(biāo)記的內(nèi)容。用于在移除內(nèi)容之前是否存在進(jìn)行腳本測(cè)試EncryptPWD與腳本一起編碼口令I(lǐng)ncludeHeaders生成的腳本擁有包括生成日期和時(shí)間及其他描述信息的頭IncludeIfNotExistsTransact-SQL生成的內(nèi)容包括檢查存在的前綴。當(dāng)腳本被執(zhí)行時(shí),僅僅當(dāng)已命名內(nèi)容的拷貝不存在時(shí)生成一個(gè)內(nèi)容。NoCommandterm利用特定連接命令終止符(connection-specificcommandterminator)在腳本中獨(dú)立的Transact-SQL語句不被劃界。缺省的,獨(dú)立的Transact-SQL語句不被劃界。SchemaQualify/Transact-SQL中生成的能夠移走一個(gè)對(duì)象的對(duì)象名稱被標(biāo)記對(duì)象的擁有者限制。生成的為了產(chǎn)生標(biāo)記對(duì)象的Transact-SQL利用當(dāng)前對(duì)象擁有者限定對(duì)象名稱。SchemaQualifyForeignKeys為外來字符(key)約束的圖限定表(schemaqualifytable)標(biāo)記TimestampToBinary當(dāng)對(duì)象腳本編寫生成一個(gè)表或用戶定義的數(shù)據(jù)類型時(shí),將時(shí)間戳數(shù)據(jù)類型的說明轉(zhuǎn)換為二進(jìn)制。ToFileOnly多數(shù)SQL對(duì)象腳本編寫方法指定一個(gè)返回值和一個(gè)可選輸出文件。當(dāng)使用時(shí),并且一個(gè)輸出文件被指定時(shí),所述方法并不將腳本返回給調(diào)用者,而是僅僅將腳本寫入輸出文件。由于編寫出相關(guān)性腳本潛在性的會(huì)產(chǎn)生出很大數(shù)量的字符串,因此只要不需要字符串輸出,就指定這一選項(xiàng)。UnicodeFile缺省的生成unicode輸出LoginSID包括登陸腳本的安全識(shí)別DDLHeaderOnly僅為對(duì)象的DDL頭編寫腳本,所述對(duì)象具有諸如存儲(chǔ)式程序(StoredProcedure)的本體文本。缺省是腳本化輸出全部DLL。DDLBodyOnly僅為對(duì)象的DDL本體編寫腳本,述對(duì)象具有諸如存儲(chǔ)式程序(StoredProcedure)的本體文本。缺省是腳本化輸出全部DLL。腳本相關(guān)性選項(xiàng)腳本器選項(xiàng)描述WithDependencies對(duì)輸出的腳本表進(jìn)行擴(kuò)展,包括所有相關(guān)的對(duì)象Database生成Transact-SQL數(shù)據(jù)庫優(yōu)先定義腳本。數(shù)據(jù)庫允許或不Permissions允許語句的執(zhí)行權(quán)力ScripIndexes利用一個(gè)OR邏輯運(yùn)算符使聚類索引,非聚類索引和DRI索引結(jié)合起來。既適用于表格也適用于查看對(duì)象。Permissions利用一個(gè)OR邏輯運(yùn)算符使SQLSMO腳本對(duì)象允許和SQLSMO腳本數(shù)據(jù)庫允許結(jié)合起來。PrimaryObject生成能夠產(chǎn)生相關(guān)內(nèi)容的Transact-SQLExtendedProperty包括擴(kuò)展作為對(duì)象腳本一部分的腳本屬性XMLNamespaces包括作為對(duì)象腳本一部分的XML名空間FullTextVatalogs批處理命令,包括能夠生成查找全文目錄的Transact-SQL語句交叉服務(wù)器層腳本生成腳本器選項(xiàng)描述NoCollation缺省為生成校對(duì)。說明表對(duì)象。FullTextIndex包括定義查詢?nèi)乃饕恼Z句的批處理命令Bindings生成sp-缺省聚合(sp-bindefault)和sp-聚合規(guī)則(sp-bindrule)語句。僅當(dāng)腳本編寫涉及一個(gè)SQL服務(wù)器表時(shí)適用。ClusteredIndexes生成定義聚合索引的Transact-SQL。僅當(dāng)腳本編寫涉及一個(gè)SQL服務(wù)器表時(shí)適用。DRI-All使用邏輯運(yùn)算符OR定義所有值為DRI組合DRI-AllConstraints使用OR邏輯運(yùn)算符結(jié)合DRI-檢查,DRI-缺省,DRI外來密鑰,DRI初級(jí)密鑰,DRI單件密鑰,DRIXML密鑰DRI-AllKeys使用OR邏輯運(yùn)算符結(jié)合DRI外來密鑰,DRI初級(jí)密鑰,DRI單件密鑰,DRIXML密鑰XMLIndexes生成的腳本產(chǎn)生XML索引DRI-Checks生成的腳本產(chǎn)生指定行的檢查限制。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-Clustered生成的腳本產(chǎn)生聚合索引。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-Defaults生成的腳本包括指定行的缺省。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-Foreignkeys生成的腳本產(chǎn)生外來密鑰限制。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-NonClustered生成的腳本產(chǎn)生非聚合索引。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-PrimaryKey生成的腳本產(chǎn)生原始密鑰限定。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRI-UniqueKey生成的腳本產(chǎn)生候選密鑰,所述密鑰被單一索引定義。當(dāng)宣布的引用完整性建立了關(guān)系從屬性時(shí)指向腳本。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRIIndexes利用單一索引腳本化原始密鑰限制以完成宣布的引用完整性。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。DRIWithNoCheck當(dāng)使用DRI檢查,DRI外來密鑰時(shí)生成的腳本包括WTTHNOCHECK子句以最佳化限制的生成。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。NonIdentity生成的Transact-SQL語句不包括對(duì)同一屬性、種子和增量的定義。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。NonClusteredIndexes生成Transact-SQL定義非聚合索引。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。ObjectPermissions在腳本化數(shù)據(jù)庫對(duì)象時(shí),包括Transact-SQL優(yōu)先權(quán)定義語句Triggers生成Transact-SQL定義觸發(fā)。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)應(yīng)用。UserTypesToBaseType將用戶定義數(shù)據(jù)類型的說明轉(zhuǎn)換為SQL服務(wù)器的基礎(chǔ)數(shù)據(jù)類型。僅當(dāng)腳本涉及一個(gè)SQL服務(wù)器表時(shí)使用NoFileGroups不包括’ON<filegroup>’子句的批處理命令,所述子句指向文件組用法其他腳本選項(xiàng)描述AllowSystemObjects(Boolean)允許腳本化系統(tǒng)對(duì)象。如果沒有說明系統(tǒng)對(duì)象將被過濾出去。AgentAlertJob生成Transact-SQL腳本,產(chǎn)生SQL服務(wù)器代理服務(wù)作業(yè)和警告AgentNotify當(dāng)腳本化一個(gè)警報(bào)時(shí),生成腳本以產(chǎn)生所述警告的通知。ANSIPadding批處理命令括Transact-SQL語句SETANSIPADDINGON和SETANSIPADDINGOFF語句,在生成的腳本的CTEATETABLE語句之前或之后NoWhatIfIndex批處理命令不包括CREATESTATISTICS語句NoTablePartitioningSchemes批處理命令不包括表對(duì)象的部分圖表NoIndexPartitioningSchemes批處理命令不包括索引對(duì)象的部分圖表NoAssemblies批處理命令不包括AssembliesNoViewColumns為了查看對(duì)象不腳本化指定列。查看列在查看產(chǎn)生時(shí)被記錄,可以由特別指定上述內(nèi)容指定也可以由選擇語句定義IncludeDatabaseContext在腳本頭加入一個(gè)USE[database]語句。所述[database]包括被腳本化對(duì)象的數(shù)據(jù)庫名稱如上所提到的,盡管已經(jīng)結(jié)合了各種計(jì)算裝置和網(wǎng)絡(luò)體系結(jié)構(gòu),描述了本發(fā)明的示例性具體實(shí)施例,但是所述基礎(chǔ)概念可以被用于任何想要在其中實(shí)施自動(dòng)任務(wù)生成器的計(jì)算裝置或系統(tǒng)。因此,本發(fā)明的方法或系統(tǒng),可以被用于各種應(yīng)用和裝置。盡管在此選出了示例性編程語言、名稱和例子作為各種選擇中的代表,但并不是想要以這些語言、名稱和例子進(jìn)行限制。本領(lǐng)域的技術(shù)人員如果能意識(shí)到,存在大量提供對(duì)象代碼的方法,其可實(shí)現(xiàn)本發(fā)明所完成的同樣、類似或等效的系統(tǒng)和方法??梢越Y(jié)合硬件或軟件或如果合適的話用兩者的組合,來實(shí)施此處所描述的各種技術(shù)。因此,本發(fā)明的方法和裝置、或其部分的某一方面,可以表現(xiàn)為包括在有形的介質(zhì)中程序代碼(即,指令)的形式,所述介質(zhì)可以是諸如軟盤、CD-ROM、硬盤、或任一其他機(jī)器可讀存儲(chǔ)介質(zhì),其中當(dāng)所述程序代碼被諸如計(jì)算機(jī)這樣的機(jī)器載入并執(zhí)行時(shí),所述機(jī)器就變成了實(shí)施本發(fā)明的裝置。若是在可編程計(jì)算機(jī)上的程序代碼,所述計(jì)算裝置將通常包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失和非易失性存儲(chǔ)器和/或存儲(chǔ)器元件)、至少一個(gè)輸入裝置、和至少一個(gè)輸出裝置??梢岳锰幚肀景l(fā)明的服務(wù)程序(service)的信號(hào)的一個(gè)或多個(gè)程序,例如通過使用數(shù)據(jù)處理API或類似的,被優(yōu)選地以高級(jí)程序性的或面向?qū)ο蟮木幊陶Z言來實(shí)施,以于計(jì)算機(jī)進(jìn)行通信。然而,如果想要的話,所述程序(s)能夠以匯編或機(jī)器語言來實(shí)施。無論如何,所述語言都可以被編譯或解釋成語言,并與硬件的實(shí)施相結(jié)合。本發(fā)明的方法和裝置,還可以通過通信來實(shí)施,以程序代碼的形式被具體化的通信,通過某些傳輸介質(zhì)而被傳輸,諸如通過電線或電纜,通過光纖,或通過任一其他形式的傳輸,其中,當(dāng)所述程序代碼被機(jī)器收到和載入并執(zhí)行時(shí),諸如EPROM、門陣列、可編程邏輯裝置(PLD)、客戶端計(jì)算機(jī)、錄像機(jī)或類似的、或具有如在上面的示例性實(shí)施例作描述的信號(hào)處理能力的接收機(jī)成了實(shí)施本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)施本發(fā)明時(shí),所述程序代碼就與處理器相結(jié)合以提供一唯一運(yùn)行以調(diào)用本發(fā)明所描述的功能的裝置。此外,結(jié)合本發(fā)明所用的存儲(chǔ)技術(shù),總是硬件和軟件的結(jié)合。雖然已經(jīng)結(jié)合各種附圖的優(yōu)選實(shí)施例詳細(xì)描述了本發(fā)明,但是應(yīng)該明白其他類似具體實(shí)施例可以被使用,或可以為了執(zhí)行本發(fā)明的同樣的功能而對(duì)所描述的具體實(shí)施例進(jìn)行修改和添加而不脫離本發(fā)明。而且,應(yīng)該強(qiáng)調(diào),各種計(jì)算機(jī)平臺(tái),包括手持式裝置的操作系統(tǒng)和其他應(yīng)用特定的操作系統(tǒng)都是預(yù)期中的,尤其是在無線連網(wǎng)裝置的數(shù)目仍在增加時(shí)。因此,本發(fā)明不應(yīng)被限制成單個(gè)具體實(shí)施例,而是應(yīng)該根據(jù)所附的權(quán)利要求被廣義地解釋。權(quán)利要求1.一種在關(guān)系數(shù)據(jù)庫中為至少一個(gè)對(duì)象引用生成腳本的方法,所述方法包括接收關(guān)系數(shù)據(jù)庫中將被腳本化的至少一個(gè)對(duì)象引用;偵測(cè)所述至少一個(gè)對(duì)象引用的關(guān)系從屬性;構(gòu)建一個(gè)包括所述至少一個(gè)對(duì)象引用的分級(jí)對(duì)象樹;基于偵測(cè)到的關(guān)系從屬性從分級(jí)對(duì)象樹中派生出一個(gè)從屬性列表;并且響應(yīng)從屬性列表生成一個(gè)腳本。2.如權(quán)利要求1所述的方法,其中構(gòu)建過程包括刪去重復(fù)對(duì)象引用和輸入非重復(fù)對(duì)象引用及相關(guān)元數(shù)據(jù)到一個(gè)分級(jí)樹。3.如權(quán)利要求1所述的方法,其中構(gòu)建過程包括觸發(fā)能夠表明進(jìn)度并且提供可選擇的對(duì)象操作的事件。4.如權(quán)利要求3所述的方法,其中可選對(duì)象操作包括過濾所述至少一個(gè)對(duì)象引用,其中被用戶以及程序中的一個(gè)或多個(gè)選擇的一個(gè)對(duì)象引用可以被刪除。5.如權(quán)利要求4所述的方法,其中可選對(duì)象操作包括移動(dòng)一個(gè)已選對(duì)象引用以及所有依賴于已選對(duì)象引用的后續(xù)引用。6.如權(quán)利要求1所述的方法,其中從屬性列表包括一個(gè)線性列表,所述線性列表被描述為一個(gè)對(duì)象生成順序以滿足從屬性限定。7.如權(quán)利要求1中所述的方法,其中所述導(dǎo)出步驟遞歸地通過較低層對(duì)象引用的從屬性并且提供可選對(duì)象操作其中較低層相關(guān)性可被刪除。8.如權(quán)利要求1所述的方法,其中所述生成包括允許改變關(guān)系數(shù)據(jù)庫腳本的腳本選項(xiàng)。9.如權(quán)利要求1所述的方法,其中關(guān)系數(shù)據(jù)庫是一個(gè)SQL數(shù)據(jù)庫。10.如權(quán)利要求1所述的方法,其中關(guān)系從屬性是父親—兒子、兒子—孫子和孫子—曾孫中的一個(gè)或多個(gè)。11.如權(quán)利要求1所述的方法,其中至少一個(gè)對(duì)象引用包括一個(gè)統(tǒng)一資源名稱。12.一種為SQL應(yīng)用生成分級(jí)對(duì)象樹的方法,所述方法包括接收至少一個(gè)對(duì)象引用,每一個(gè)對(duì)象引用代表一個(gè)對(duì)象;確定所述至少一個(gè)對(duì)象引用之間的關(guān)系從屬性;移出重復(fù)的對(duì)象引用;并且構(gòu)建一個(gè)對(duì)應(yīng)于所述至少一個(gè)對(duì)象引用的關(guān)系從屬性的SQL分級(jí)對(duì)象樹。13.如權(quán)利要求12所述的方法,其中所述至少一個(gè)對(duì)象引用包括一個(gè)統(tǒng)一資源名稱。14.如權(quán)利要求12所述的方法,進(jìn)一步包括觸發(fā)允許進(jìn)展監(jiān)控和對(duì)象操作中的至少一個(gè)的事件。15.如權(quán)利要求12所述的方法,其中對(duì)象操作包括加入、修改和刪除對(duì)象引用中的至少一個(gè)。16.一種為SQL應(yīng)用生成從屬性列表的方法,所述方法包括接收一個(gè)或多個(gè)分級(jí)對(duì)象樹,所述分級(jí)對(duì)象樹包括至少一個(gè)包括關(guān)系從屬性的對(duì)象引用,其中所述至少一個(gè)對(duì)象引用代表至少一個(gè)對(duì)象;偵測(cè)在所述至少一個(gè)對(duì)象引用之間的關(guān)系從屬性;遞歸地通過每一個(gè)關(guān)系從屬性;并且構(gòu)建一個(gè)SQL從屬性列表;其中所述從屬性列表包括一個(gè)線性列表,該線性結(jié)表為所述至少一個(gè)對(duì)象揭示了其順序,所述順序?qū)?yīng)于滿足關(guān)系從屬性的序列。17.如權(quán)利要求16的方法,進(jìn)一步包括觸發(fā)一個(gè)或多個(gè)允許進(jìn)展監(jiān)控和對(duì)象操作中的至少一個(gè)的事件。18.如權(quán)利要求17的方法,其中對(duì)象操作包括加入、修改和刪除對(duì)象引用中的至少一個(gè)。19.一種為SQL應(yīng)用生成腳本的方法,所述方法包括接收至少一個(gè)代表至少一個(gè)對(duì)象引用的順序序列的從屬性列表,所述順序序列反映了所述至少一個(gè)對(duì)象引用之間的關(guān)系從屬性。在所述至少一個(gè)從屬性列表中例示所述至少一個(gè)對(duì)象引用;調(diào)用事先確定的所述一個(gè)或多個(gè)對(duì)象引用的腳本方法;以及利用事先確定的腳本方法構(gòu)建一個(gè)SQL腳本,其中生成一對(duì)應(yīng)于所述至少一個(gè)從屬性列表的腳本。20.如權(quán)利要求19的方法,進(jìn)一步包括觸發(fā)允許進(jìn)展監(jiān)控和腳本操作中的一個(gè)或多個(gè)的事件。21.一種計(jì)算機(jī)可讀介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令,用于執(zhí)行在關(guān)系數(shù)據(jù)庫中為至少一個(gè)對(duì)象引用生成腳本的方法,所述方法包括接收關(guān)系數(shù)據(jù)庫中將被腳本化的至少一個(gè)對(duì)象引用;偵測(cè)所述至少一個(gè)對(duì)象引用的關(guān)系從屬性;構(gòu)建一個(gè)包括所述至少一個(gè)對(duì)象引用的分級(jí)對(duì)象樹;基于偵測(cè)到的關(guān)系從屬性從分級(jí)對(duì)象樹中派生出一個(gè)從屬性列表;并且響應(yīng)從屬性列表生成一個(gè)腳本。22.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中構(gòu)建過程包括刪去重復(fù)對(duì)象引用和輸入一個(gè)非重復(fù)對(duì)象引用及相關(guān)的元數(shù)據(jù)到一個(gè)分級(jí)對(duì)象樹。23.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中構(gòu)建過程包括觸發(fā)表明進(jìn)度并且提供可選擇的對(duì)象操作的事件。24.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中可選對(duì)象操作包括過濾所述至少一個(gè)對(duì)象引用,其中所述對(duì)象引用可以被刪除。25.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其中可選對(duì)象操作包括移出一個(gè)對(duì)象引用以及所有依賴于所移出對(duì)象引用的后續(xù)指針。26.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中從屬性列表包括一個(gè)線性列表,所述線性列表按所述至少一個(gè)對(duì)象引用被生成以滿足從屬性限定的順序被描述。27.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中所述導(dǎo)出步驟遞歸地步進(jìn)通過較低層對(duì)象引用的從屬性并且提供可選對(duì)象操作其中較低層從屬性可被刪除28.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中所述生成包括允許腳本選項(xiàng)改變關(guān)系數(shù)據(jù)庫腳本。29.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其中所述至少一個(gè)對(duì)象引用包括一個(gè)統(tǒng)一資源名稱。30.一種計(jì)算機(jī)可讀介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令,用于執(zhí)行一種為SQL應(yīng)用生成分級(jí)對(duì)象樹的方法,所述方法包括接收至少一個(gè)對(duì)象引用,其中所述至少一個(gè)對(duì)象引用代表一個(gè)或多個(gè)對(duì)象;偵測(cè)至少一個(gè)對(duì)象引用之間的關(guān)系從屬性;移出重復(fù)的對(duì)象引用;并且構(gòu)建一個(gè)對(duì)應(yīng)于所述至少一個(gè)對(duì)象引用的關(guān)系從屬性的SQL分級(jí)對(duì)象樹。31.如權(quán)利要求30所述計(jì)算機(jī)可讀介質(zhì),其中所述至少一個(gè)對(duì)象引用包括一個(gè)統(tǒng)一資源名稱。32.一種計(jì)算機(jī)可讀介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令,用于執(zhí)行一種為SQL應(yīng)用生成從屬性列表的方法,所述方法包括獲得至少一個(gè)分級(jí)對(duì)象樹,所述分級(jí)對(duì)象樹包括至少一個(gè)具有關(guān)系從屬性的對(duì)象引用;偵測(cè)在所述至少一個(gè)對(duì)象引用之間的關(guān)系從屬性;遞歸地遍歷每一個(gè)關(guān)系從屬性;并且構(gòu)建一個(gè)SQL從屬性列表;其中所述從屬性列表包括一個(gè)線性列表,該線性列表根據(jù)一個(gè)滿足關(guān)系從屬性的序列排序所述至少一個(gè)對(duì)象。33.一種計(jì)算機(jī)可讀介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令,用于執(zhí)行一種為SQL應(yīng)用生成腳本的方法,所述方法包括接收一個(gè)或多個(gè)代表至少一個(gè)對(duì)象引用的順序序列的從屬性列表,所述順序反映了關(guān)系從屬性;例示每一個(gè)對(duì)應(yīng)于所述從屬性列表的至少一個(gè)對(duì)象引用的對(duì)象;調(diào)用事先確定的所述至少一個(gè)對(duì)象表示的腳本方法;以及利用所述事先確定的腳本方法構(gòu)建一個(gè)SQL腳本,其中生成一對(duì)應(yīng)于所述至少一個(gè)從屬性列表的腳本。34.一種用于為關(guān)系數(shù)據(jù)庫中的至少一個(gè)對(duì)象引用生成腳本的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括輸入設(shè)備,用于接收將為所述關(guān)系數(shù)據(jù)庫而被腳本化的至少一個(gè)對(duì)象引用;處理器,其中執(zhí)行用于生成腳本的計(jì)算機(jī)指令,進(jìn)行如下動(dòng)作偵測(cè)所述至少一個(gè)對(duì)象引用的關(guān)系從屬性;構(gòu)建一個(gè)包括所述至少一個(gè)對(duì)象引用的分級(jí)對(duì)象樹;基于偵測(cè)到的關(guān)系從屬性從分級(jí)對(duì)象樹中派生出一個(gè)從屬性列表;以及響應(yīng)從屬性列表生成一個(gè)腳本;和通訊端口,用于將腳本傳送到顯示設(shè)備、后續(xù)計(jì)算機(jī)程序和存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)。35.如權(quán)利要求34的系統(tǒng),其中所述至少一個(gè)對(duì)象引用包括一個(gè)統(tǒng)一資源名稱。36.一種利用統(tǒng)一資源名稱來唯一地識(shí)別SQL應(yīng)用中的對(duì)象的方法,包括為將被表示的對(duì)象選擇一個(gè)名稱;生成一個(gè)包括已選名稱的統(tǒng)一資源名稱,其中統(tǒng)一資源名稱成為所述對(duì)象的一個(gè)SQL兼容表示。全文摘要在關(guān)系數(shù)據(jù)庫中為不同復(fù)雜程度的對(duì)象生成腳本的方法包括從通過系統(tǒng)的單一或多個(gè)指向?qū)ο蟮闹羔樕梢粋€(gè)分級(jí)對(duì)象樹。在分級(jí)樹的構(gòu)成中將重復(fù)對(duì)象引用刪除。從分級(jí)樹中生成從屬性列表。所述從屬性列表代表一個(gè)對(duì)象的線性表,所述對(duì)象以其將被生成以滿足相關(guān)限定的順序排列。從從屬性列表中生成一個(gè)腳本,所述從屬性列表允許調(diào)度不同復(fù)雜程度的對(duì)象到目標(biāo)數(shù)據(jù)庫中。通過實(shí)例化從屬性列表并且調(diào)用一個(gè)事先構(gòu)建的對(duì)象腳本方法生成腳本。每一個(gè)階段都能夠單獨(dú)操作。文檔編號(hào)G06F12/00GK1573753SQ200410055008公開日2005年2月2日申請(qǐng)日期2004年6月4日優(yōu)先權(quán)日2003年6月6日發(fā)明者D·松金,M·沃里斯申請(qǐng)人:微軟公司