在SQL Server中通過(guò).NET遠(yuǎn)程的執(zhí)行SQL文件
首先我們需要把SQL文件傳到對(duì)應(yīng)的WEB目錄中,最好是把這個(gè)文件拷貝到一個(gè)遠(yuǎn)程用戶(hù)不易訪(fǎng)問(wèn)的受保護(hù)的地方。
微軟的SQL Server產(chǎn)品組已經(jīng)編寫(xiě)好了這個(gè)操作頁(yè)面,通過(guò)訪(fǎng)問(wèn)http://www.codeplex.com/sqlhost/Wiki/View.aspx?title=UploadAndExecute這個(gè)頁(yè)面,就可以看到RunSQL.aspx這個(gè)鏈接,點(diǎn)擊它就可以下載了一個(gè)名為FileDownload.aspx的頁(yè)面,在代碼中我們可以看到已經(jīng)定義的兩個(gè)參數(shù),代碼如下:
// Url of the T-SQL file you want to run string fileUrl = @'http://<>/<>.sql'; // Connection string to the server you want to execute against string connectionString = @'<>';
fileUrl代表上傳SQL文件的存放路徑地址和名稱(chēng),connectionString代表數(shù)據(jù)庫(kù)連接字符串,然后需要把FileDownload.aspx上傳到服務(wù)器的WEB目錄下,需要直接能通過(guò)域名訪(fǎng)問(wèn)到。
然后通過(guò)瀏覽器訪(fǎng)問(wèn)遠(yuǎn)程的FileDownload.aspx網(wǎng)頁(yè),這時(shí)候遠(yuǎn)程服務(wù)器上的頁(yè)面會(huì)分析 .SQL 文件,并且執(zhí)行其中的所有SQL語(yǔ)句。 執(zhí)行成功后,會(huì)提示“T-SQL file executed successfully”,否則會(huì)提示具體的錯(cuò)誤信息。
為了安全,運(yùn)行完SQL 腳本文件后,把FileDownload.aspx網(wǎng)頁(yè)和SQL 文件從遠(yuǎn)程服務(wù)器上刪除。
如果我們需要保留這個(gè)功能,而且在維護(hù)的時(shí)候可能會(huì)經(jīng)常操作一些SQL語(yǔ)句組,這時(shí)候,我們可以對(duì)FileDownload.aspx改造一下,這時(shí)候可以做以下幾個(gè)改進(jìn):
1) 增加權(quán)限部分功能,禁止非法用戶(hù)訪(fǎng)問(wèn)此頁(yè)面,如只允許后臺(tái)管理員進(jìn)行操作;
2) 可以通過(guò)后臺(tái)傳本地的SQL文件,上傳到服務(wù)器指定目錄,然后此頁(yè)面通過(guò)動(dòng)態(tài)讀取此文件;
3) 對(duì)數(shù)據(jù)庫(kù)連接字符串也采用讀取WEB.CONFIG形式,便于數(shù)據(jù)庫(kù)的統(tǒng)一管理。
感興趣的讀者可以按此進(jìn)行進(jìn)一步的擴(kuò)充。這樣就通過(guò).NET建成了一個(gè)非常靈活的數(shù)據(jù)庫(kù)操作頁(yè)面了,這樣我們?cè)诿恳淮螌?duì)產(chǎn)品進(jìn)行升級(jí)或者打補(bǔ)丁時(shí)候,對(duì)數(shù)據(jù)庫(kù)方面的操作,我們就可以建立一個(gè)整個(gè)的SQL文件進(jìn)行維護(hù)了。
