日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转:微软未公开的几个过程介绍及用法

發(fā)布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:微软未公开的几个过程介绍及用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?

一些用在?SQL 2000?的企業(yè)管理?GUI?中,并且不打算用于其他的流程。微軟已預計將其中的一些存儲過程從未來的?SQL Server?版本中刪除?(?或已經(jīng)刪除了?)?。雖然這些存儲過程可能很有用并為你節(jié)省了很多時間,但是他們可以在任何時候改變他們的函數(shù)或簡單的刪除掉。

  下面的圖表顯示了當許多存儲過程從一個?Microsoft SQL Server?版本移入另一個版本時,引入了新的存儲過程,而原來的一些則從安裝包里刪除了。大多數(shù)的存儲過程,如果不是所有的,要求用戶是系統(tǒng)管理員服務器角色以便執(zhí)行這些存儲過程。和文件系統(tǒng)交互的存儲過程還要求執(zhí)行存儲過程的用戶?(?還有?SQL Server?的服務帳戶?)?具有訪問文件?/?文件夾的權限。

?

存儲過程名稱

SQL 2000

SQL 2005

SQL 2008

sp_executeresultset

X

?

?

sp_MSforeachdb

X

X

X

sp_MSforeachtable

X

X

X

sp_readerrorlog

X

X

X

xp_create_subdir

?

X

X

Xp_delete_file

?

X

X

xp_dirtree

X

X

X

xp_fileexist

X

X

X

xp_fixeddrives

X

X

X

xp_getfiledetails

X

?

?

xp_getnetname

X

X

X

xp_loginconfig

X

X

X

xp_makecab

X

?

?

xp_msver

X

X

X

xp_get_mapi_profiles

X

X

X

xp_subdirs

X

X

X

xp_test_mapi_profile

X

X

X

xp_unpackcab

X

?

?

  ?sp_executeresultset

  微軟在?SQL Server 2005?中刪除了這個名為?sp_executeresultset?的便利小程序。它允許你在空閑時通過使用?SELECT?查詢產(chǎn)生動態(tài)?SQL?代碼。然后,作為結果的?SQL?命令將會在數(shù)據(jù)庫上執(zhí)行。它允許你創(chuàng)建單獨的一行代碼,這行代碼可以在單步中查詢到你的數(shù)據(jù)庫里的每一個表的記錄數(shù)目?(?就像例子中所顯示的?)?。這是一個未公開的存儲過程,而且無法知道它為什么被刪除了。但是,唉,這個便利的有用存儲過程已經(jīng)沒有了?! ?/span>

exec sp_execresultset 'SELECT ''SELECT '''''' + name + '''''',

  ?count(*) FROM '' + name

  ?from sysobjects

  ?where xtype = ''U'''

  ?sp_MSforeachdb / sp_MSforeachtable

?

 ?sp_MSforeachdb / sp_MSforeachtable?  

  兩個存儲過程,?sp_MSforeachdb??sp_MSforeachtable?封裝了一個指針。它們允許你對你的?SQL Server?上的每一個數(shù)據(jù)庫和當前數(shù)據(jù)庫中的每一個表分別執(zhí)行?T-SQL?代碼。然而你不能在?SQL2000?和之前的版本中在一個?sp_MSforeachdb?命令中使用?sp_MSforeachtable?命令。在這些存儲過程中使用的指針名稱是一樣的?(hCForEach)?,因此在每一次執(zhí)行?sp_MSforeachtable?時會返回一個錯誤說該指針名稱已經(jīng)在使用。在?SQL Server 2005?中,微軟解決了這一問題。為了執(zhí)行??下一個??命令,你必須告訴其中的一個存儲過程它將使用一個不同的替換字符而不是默認的問號。我改變了數(shù)據(jù)庫命令中的這個替換字符,因為它更為簡單。

  打印當前數(shù)據(jù)庫中的每一個表的名稱

< p>?  ?exec sp_MSforeachtable 'print ''?'''

  打印當前服務器的每一個數(shù)據(jù)庫

  ?exec sp_MSforeachdb 'print ''?'''

  打印當前數(shù)據(jù)庫的每一個表

  ?exec sp_MSforeachdb 'use [@] exec sp_MSforeachtable ''print

  ?''''@.?''''''', '@'

  ?sp_readerrorlog / xp_readerrorlog

  存儲過程?sp_readerrorlog?實際上有兩種形式。每一項的工作內(nèi)容一樣?;?一個是另一個的簡單封裝。封裝的存儲過程是?sp_readerrorlog?,它調用?xp_readerrorlog?。這兩個都有四個輸入?yún)?shù),但是只有前兩個對我們有用。第一個參數(shù)設定你希望看到的文件編號。第二個是要查看的日志?(?對于?ERRORLOG??1?或空,對?SQL Agent Log??2)?。這允許你快速并很容易地查看你的錯誤日志,而不是得查看?SQL Server 2005??SQL 2008?所帶來的臃腫的日志閱覽器。

  查看當前的?SQL ERRORLOG?文件。

  ?exec sp_readerrorlog

  ?exec sp_readerrorlog 0, 1

  查看之前的?SQL Agent Log?文件。

  ?exec sp_readerrorlog 1, 2

  ?xp_create_subdir

  在?SQL Server 2005?中引入的?xp_create_subdir?存儲過程是非常輕便的,因為你可以用它在?SQL Server?的硬盤上或從?T-SQL?內(nèi)部的網(wǎng)絡共享上創(chuàng)建文件夾。

  ?exec xp_create_subdir 'c:MSSQLData'

  ?xp_delete_file

  使用?SQL Server 2005?中引入的?xp_delete_file?存儲過程從?SQL Server?的硬盤或從?T-SQL?內(nèi)部的網(wǎng)絡共享上刪除文件。

  ?xp_dirtree

  ?xp_dirtree?存儲過程允許你查看文件夾樹狀結構和?/?或一個文件夾下的文件列表。這個存儲過程有幾個參數(shù)用來控制這個存儲過程查詢深度和是返回文件和文件夾還是只返回文件夾。第一個參數(shù)設定要查看的文件夾。?(?建議?;?不要在?Windows?的系統(tǒng)盤根目錄上執(zhí)行這個存儲過程,因為產(chǎn)生樹和返回數(shù)據(jù)需要一些時間。)?第二個參數(shù)限制了這個存儲過程將會進行的遞歸級數(shù)。默認是零或所有級別。第三個參數(shù)告訴存儲過程包括文件。默認是零或只對文件夾,數(shù)值?1?代表包括結果集的文件。定義第三個參數(shù)為不為零的數(shù)值將會增加一行到輸出的調用文件,這個文件是顯示進入一個文件夾或文件的一個小文件。

  獲得完整目錄樹。

  ?exec xp_dirtree 'd:mssql'

  獲得目錄樹的前兩級。

  ?exec xp_dirtree 'd:mssql', 2

  獲得目錄數(shù)的前三級,包括文件。

  ?exec xp_dirtree 'd:mssql', 3, 1

  ?exec xp_dirtree 'd:mssql'

  ?xp_fileexist

  這個?SQL Server?存儲過程,?xp_fileexist?, 是用來決定一個文件是存在于的硬盤上還是在網(wǎng)絡共享上。它對于從規(guī)則文檔中下載數(shù)據(jù)的存儲過程是非常有用的。它允許你在打算盲目的下載數(shù)據(jù)之前查看文件是 否存在。這個存儲過程有兩個參數(shù)。用第一個參數(shù)來確定你想要的文件或文件夾是否存在。第二個參數(shù)是一個輸出參數(shù),如果它被定義了,會根據(jù)文件存在或不存在 而返回?1??0?。

  沒有這個參數(shù):

  ?exec xp_fileexist 'c:importfile.csv'

  有這個參數(shù):

  ?DECLARE @file_exists int

  ?exec xp_fileexist 'c:importfile.csv', @file_exists OUTPUT

  ?SELECT @file_exists

  ?xp_fixeddrives

  ?xp_fixeddrives?存儲過程是最有用的存儲過程之一。它展示了一個列表所有驅動器名和每個驅動器上的空閑空間大小。這個參數(shù)有一個單獨的可選輸入?yún)?shù),它可以按驅動器類型過濾結果。設置為數(shù)值?3?將會返回所有的大量存儲設備?(CD -ROM??DVD?等等?);?設置為數(shù)值?4?將會返回硬盤驅動器?;?而當設置為數(shù)值?2?時將會返回可移動的設備?(USB?插拔驅動器,閃存驅動器等等?)?。

  返回所有的驅動器。

  ?exec xp_fixeddrives

  只返回硬盤驅動器

  ?exec xp_fixeddrives 2

  ?xp_getfiledetails

  ?xp_getfiledetails?是另一個非常有用的存儲過程,在?SQL Server 2000?版本中最后一次可用。這個存儲過程返回關于指定文件的大小、日期和屬性信息,包括創(chuàng)建、訪問和修改的日期和次數(shù)。

< p>?  ?exec xp_getfiledetails 'c:filetoload.csv'

  ?xp_getnetname

  ?xp_getnetname?存儲過程返回?Microsoft SQL Server?安裝所在的物理機器的名稱。你可以使機器名稱作為數(shù)據(jù)集返回或作為變量返回。

  沒有這個參數(shù)

  ?exec xp_getnetname

  使用這個參數(shù)

  ?DECLARE @machinename sysname

  ?exec xp_getnetname @machinename OUTPUT

  ?select @machinename

  ?xp_loginconfig

  ?SQL Server?存儲過程將會告訴你關于執(zhí)行它的用戶的一些基礎的校驗信息。它告訴你校驗方法(Windows??SQL?登錄?)?、服務器的默認域、審計級別,還有一些內(nèi)部分隔符信息。

  ?exec xp_loginconfig

  ?xp_makecab

  在?SQL Server 2000?中,微軟給了我們直接從?T-SQL?壓縮系統(tǒng)文件的能力,不必再到?DOS?下通過xp_cmdshell?和運行第三方軟件,像?pkzip??winzip?來完成。這個命令就是?xp_makecab?。它允許你指定一列你想壓縮的文件還有你想放進去的?cab?文件。它甚至允許你選擇默認壓縮,?MSZIP?壓縮?(?類似于?.zip文件格式?)?或不壓縮。第一個參數(shù)給出到?cab?文件的路徑,這是你想創(chuàng)建和添加文件的地方。第二個參數(shù)是壓縮級別。如果你想使用詳細的日志記錄就使用第三個參數(shù)。第四個參數(shù)后跟著你想壓縮的文件的名稱。在我的測試里,我可以在擴展存儲過程里傳?45?個要壓縮的文件名稱,這意味著它是一個對你的數(shù)據(jù)壓縮要求來說非常靈活的解決方案。

  ?exec xp_makecab 'c:test.cab', 'mszip', 1, 'c:test.txt' , 'c:test1.txt'

  ?xp_msver

  存儲過程?xp_msver?在查看系統(tǒng)信息的時候是非常有用的。它返回關于主機操作系統(tǒng)的大量的信息?——SQL?版本號、語言、?CPU?類型、版權和商標信息、?Microsoft Windows?版本、?CPU?數(shù)和親和性設置、物理內(nèi)存設置和你的產(chǎn)品鍵。這個存儲過程有許多輸入?yún)?shù),它們允許你過濾返回的記錄。每一個參數(shù)都是一個sysname?數(shù)據(jù)類型,它接受一條記錄的名稱。如果指定了所有的參數(shù),那么只有指定的行作為參數(shù)返回。

?

  沒有指定過濾。

  exec xp_msver

  只返回Platform和Comments記錄。

  exec xp_msver 'Platform', 'Comments'

  xp_get_mapi_profiles

   xp_get_mapi_profiles存儲過程幫助你配置SQL Mail。執(zhí)行時,它會通過SQL Server 的SQL Mail組件調用Windows,并且顯示在Outlook中配置的可用的MAPI概要列表,并且它指定哪個概要是默認的概要。如果它不顯示任何記錄,那 么或者是Outlook沒有配置正確,或者是配置了Outlook概要但SQL Server沒有運行在一個域帳戶下。為了在SQL Server 2005或SQL Server 2008中使用這個存儲過程,你必須在Surface Area Configuration(外圍應用配置器)工具或sp_configure存儲過程中設置“SQL Mail XPs”選項為可用。

  exec xp_get_mapi_profiles

  xp_subdirs

  xp_subdirs存儲過程顯示通過xp_dirtree可用的信息的子集。xp_subdirs將會顯示給定的文件夾的所有的子文件夾。當你在一個表里動態(tài)地構建一個目錄樹時它是很便利的,并且你不需要擔心xp_dirtree存儲過程的其它參數(shù)。

  exec xp_subdirs 'd:/mssql'

  xp_test_mapi_profiles

   xp_test_mapi_profiles存儲過程是另一個未公開的存儲過程,它在你建立SQL Mail時非常有用。它會啟動然后停止一個MAPI會話來確保MAPI配置正確并工作在Microsoft SQL Server之內(nèi)。我應該指出,它不校驗MAPI客戶端(Outlook)中的郵件服務器配置,也不發(fā)送測試信息。

   存儲過程接受一個單獨的輸入?yún)?shù)。這個參數(shù)是你要測試的MAPI概要的名稱。就像xp_get_mapi_profiles存儲過程一樣,這個存儲過程 要運行在SQL Server 2005和SQL Server 2008之中,你必須在Surface Area Configuration(外圍應用配置器)工具或sp_configure存儲過程中設置“SQL Mail XPs”選項為可用。

   當使用SQL Mail存儲過程時,要清楚SQL Mail仍預計要從Microsoft SQL Server平臺中刪除。這意味著sp_get_mapi_profiles和xp_test_mapi_profiles存儲過程是預計要刪除的,因為 他們是SQL Mail子系統(tǒng)的一部分。你應該在SQL Server 2005中做所有的郵件工作,然后使用Database Mail替代SQL Mail來確保代碼可移植到SQL Server的未來版本中。微軟最初計劃在SQL Server 2008中刪除SQL Mail,但基于其包括在了當前的測試版本中,它未來是否存在于SQL Server 2008中還是未知數(shù)。

  xp_unpackcab

  隨xp_makecab存儲過程而來的xp_unpackcab擴展存儲過程,它能做的就像它的名字一樣:從cab文件提取文件。第一個參數(shù)是cab文件,第二個參數(shù)是你想提取到的路徑,第三個參數(shù)是詳細記錄日志。第四個參數(shù)使你可以指定“提取到”的文件名稱。

  exec xp_unpackcab 'c:/test.cab', 'c:/temp/', 1

   雖然這并不打算羅列SQL Server中未公開的存儲過程的完整列表,但它確實持著使SQL Server管理員的工作容易些的期望提供了一個對許多未公開的存儲過程的參考。記住,你絕不應該指望從一個SQL Server版本到另一個版本時這些存儲過程仍然存在,你也不應該期待在不同的版本間它們的代碼基礎仍然相同。意思就是,去編碼并享受它帶來的便利。

  所有提供的關于Microsoft SQL Server 2008(Katmai)的信息是基于該軟件的測試版10.0.1019。

轉載于:https://www.cnblogs.com/zerocc/archive/2013/04/09/3010568.html

總結

以上是生活随笔為你收集整理的转:微软未公开的几个过程介绍及用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。