SQL Server 文件操作

来源:https://www.cnblogs.com/ljhdo/archive/2018/02/23/4996060.html
-Advertisement-
Play Games

在master資料庫中,SQL Server提供系統擴展的存儲過程,其中有一些存儲過程的命名以xp_開頭,用於處理操作系統的文件。 一,判斷文件是否存在 存儲過程sys.xp_fileexist 用於判斷文件是否存在,參數是文件(file)的路徑或目錄的路徑: 該存儲過程返回的結果集有一行數據,三個 ...


在master資料庫中,SQL Server提供系統擴展的存儲過程,其中有一些存儲過程的命名以xp_開頭,用於處理操作系統的文件。

一,判斷文件是否存在

存儲過程sys.xp_fileexist 用於判斷文件是否存在,參數是文件(file)的路徑或目錄的路徑:

exec master.sys.xp_fileexist 'D:\test.txt'

該存儲過程返回的結果集有一行數據,三個欄位,如下圖:

二,創建子目錄

存儲過程 sys.xp_create_subdir 用於創建子目錄,參數是子目錄的路徑:

exec master.sys.xp_create_subdir 'D:\test'

執行存儲過程,系統返回消息:Command(s) completed successfully,說明子目錄創建成功。

三,查看子目錄結構

存儲過程sys.xp_dirtree 用於顯示當前目錄的子目錄,該存儲過程有三個參數:

  • directory:第一個參數是要查詢的目錄;
  • depth :第二個參數是要顯示的子目錄的深度,預設值是0,表示顯示所有的子目錄;
  • file :第三個參數是bool類型,指定是否顯示子目錄中的文件(file),預設值是0,表示不顯示任何文件,只顯示子目錄(directory);
exec master.sys.xp_dirtree 'D:\data'

該存儲過程返回的欄位有子目錄名稱和相對深度,返回的結果中並沒有顯示子目錄的父子關係:

 

四,刪除文件

存儲過程 sys.xp_delete_file 用於刪除文件,該存儲過程有5個參數:

  • 第一個參數是文件類型(File Type),有效值是0和1,0是指備份文件,1是指報表文件;
  • 第二個參數是目錄路徑(Folder Path), 目錄中的文件會被刪除,目錄路徑必須以“\”結尾;
  • 第三個參數是文件的擴展名(File Extension),常用的擴展名是'BAK' 或'TRN';
  • 第四個參數是Date,早於該日期創建的文件將會被刪除;
  • 第五個參數是子目錄(Subfolder),bool類型,0是指忽略子目錄,1是指將會刪除子目錄中的文件;

該存儲過程並不可以刪除所有的文件,系統限制它只能刪除特定類型的文件。

declare @Date datetime = dateadd(day,-30,getdate())
exec master.sys.xp_delete_file 0,'D:\test\','bak',@Date,0

五,查看磁碟驅動的空閑空間

存儲過程 sys.xp_fixeddrives用於查看磁碟驅動器剩餘(free)的空間

exec sys.xp_fixeddrives

六,執行DOS命令操作文件

存儲過程sys.xp_cmdshell 用於執行DOS命令,該功能對應SQL Server系統的xp_cmdshell高級選項,預設情況下,該選項是禁用的,執行該存儲過程,系統會拋出錯誤消息:

SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

因此,在執行該存儲過程之前,必須啟用xp_cmdshell選項,由於啟用該選項有潛在的風險,建議用戶在執行代碼之後,禁用該選項。

1,啟用/禁用xp_cmdshell選項

xp_cmdshell選項屬於系統的高級選項,執行以下代碼,允許用戶修改高級選項:

-- To allow advanced options to be changed.  
exec sp_configure 'show advanced options', 1;  
go  
-- To update the currently configured value for advanced options.  
reconfigure;  
go  

使用以下代碼啟用xp_cmdshell選項:

-- To enable the feature.  
exec sp_configure 'xp_cmdshell', 1;  
go  
-- To update the currently configured value for this feature.  
reconfigure;  
go 

使用以下代碼禁用xp_cmdshell選項:

-- To disable the feature.  
exec sp_configure 'xp_cmdshell', 0;  
go  
-- To update the currently configured value for this feature.  
reconfigure;  
go 

2,常用的DOS命令

該存儲過程使得用戶可以通過TSQL命令執行DOS命令,參數是命令字元串:

exec sys.xp_cmdshell 'command_string' 

2.1 建立新文件或增加文件內容

格式:ECHO 文件內容>file_name  

exec master.dbo.xp_cmdshell 'echo abc > D:\share\test.txt'

2.2 查看文件內容

格式:TYPE file_name 

exec master.dbo.xp_cmdshell 'type D:\share\test.txt'

2.3 複製文件

格式: COPY  file_name  new_folder 

exec master.dbo.xp_cmdshell 'copy D:\test\test.txt D:\share\'

2.4 顯示目錄

格式:DIR folder

exec master.dbo.xp_cmdshell 'dir D:\share\' 

2.5 創建目錄

格式:MD folder_name

exec master.dbo.xp_cmdshell 'md D:\share\test\'

2.6 刪除目錄

格式:RD folder

exec master.dbo.xp_cmdshell 'rd D:\share\test' 

2.7 刪除文件

格式:DEL file_name

exec master.dbo.xp_cmdshell 'del D:\share\test.txt' 

2.8 重命名文件

格式:REN [盤符:][路徑]〈舊文件名〉〈新文件名〉

exec master.dbo.xp_cmdshell 'ren D:\test\test.txt new.txt' 

2.9 移動文件

格式:MOVE  file_name new_folder

exec master.dbo.xp_cmdshell 'move D:\test\new.txt D:\share\' 

2.10 切換目錄

格式:CD[盤符:][路徑名][子目錄名]

3,執行BCP命令

 

參考文檔:

xp_cmdshell Server Configuration Option

xp_cmdshell (Transact-SQL)

常見dos命令總結

DOS中的ECHO命令詳解


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 強制:不允許在跳板機上/生產伺服器上手工連接,查詢或更改線上數據。 強制:所有上線腳本必須先在測試環境執行,驗證通過以後方可在生產環境執行。 強制:上線腳本的編碼格式統一為UTF-8。 強制:訪問資料庫需要使用DNS功能變數名稱,不能直接寫IP。 ...
  • 一、問題概述 問題大概是這樣的,有一個功能頁面經常查詢超時,有時候就算能查詢出來也要很長的時間,但是有時又會很快。遇到的這種問題在排除掉網路原因之後基本上可以從查詢語句上去找原因。 編譯查詢SQL語句和查詢進程等待結果如下: 1.進程等待 2.編譯查詢 問題分析: 1.等待類型為SOS_SCHEDU ...
  • Elasticsearch 是利用分片將數據分發到集群內各處的。分片是數據的容器,文檔保存在分片內,分片又被分配到集群內的各個節點里。 當你的集群規模擴大或者縮小時, Elasticsearch 會自動的在各節點中遷移分片,使得數據仍然均勻分佈在集群里。 ...
  • 目的 描述塊中表行數據的存儲 創建和管理表空間 獲取表空間信息 表數據的存儲方式 創建表時,還會創建一個用於保存其數據的段。 表空間包含一個段集合。 從邏輯上表包含許多行列值。行最終以行片段的形式存儲在資料庫塊中。之所以稱為行片段,是因為在某些情況下可能會在一個位置存儲不完整的行。 -當插入的行太大 ...
  • 下載mongodb安裝包 1. https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl?_ga=2.233271640.711265466.1519368764-1223643675.1519368764 這裡是所有歷史版本 首先聲明下,我下載了此時 ...
  • 2018年春節後第一天上班就遇到一個審計日誌無法寫入的問題,具體解決思路如下。 一、錯誤日誌 資料庫錯誤日誌內容: Fri Feb 23 11:16:30 2018OS Audit file could not be created; failing after 6 retriesFri Feb 2 ...
  • 資料庫學習筆記 一 前言 作為程式員工作已經很長時間了,但是資料庫方面的能力真的是拿不出手,所以準備開始系統的學習一下資料庫知識。 我選擇的資料庫是微軟對的SqlServer(MSSQL) 最開始有一次我閑的沒事出去面試,被問到之前有沒有用過MSSQL,腦中一片空白不知道這是個啥,我竟然說沒用過。 ...
  • Scores表 併列 不併列 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...