2016-03-15 8 views
0

我有兩臺測試機器。我不知道這是可能的,但這裏是我嘗試做SQL:當我連接到另一臺數據庫服務器時,檢查本地計算機上是否存在文件

  1. MACHINE1:有DBSERVER設置

    我在哪裏當前登錄

    所在的文件C:\ test_IDNumber1 .txt位於

    我在哪裏使用SSMS。我連接到機器2 \ SQLServer的

  2. 機器2:有DBSERVER設置

    其中用於DBTest的DBSERVER位於

    DBTest是在文件名記錄被存儲

  3. 首先,我需要做一些從DBTest中選擇腳本以獲取文件名的IDNumber

    SELECT FileName FROM tblFiles where...... (results to "IDNumber1") 
    
  4. 然後我會檢查文件是否存在具有相同的IDNumber(如:「C:\ test_IDNumber1.txt」)如果文件存在使用該腳本

    EXEC xp_fileexist 'C:\test_IDNumber1.txt', @exists OUTPUT 
    
  5. ,我需要刪除DBtest記錄在機器2和MACHINE1

    DELETE FROM tblFiles where Filename = 'IDNumber1' 
    EXEC master.dbo.xp_cmdshell 'del ''C:\test_IDNumber1.txt''' 
    

的文件,但生存結果總是0,因爲它是檢查機器2的C盤裏的DBTest所在。

有沒有辦法從Machine2的db中使用選擇腳本並檢查Machine1中是否存在文件?

非常感謝你

+2

爲什麼數據庫服務器需要檢查遠程機器上的文件?你想達到什麼目的? – miroxlav

+0

嗨@miroxlav,我試圖檢查的文件的文件名是從數據庫。我需要先從數據庫中選擇idnumber,然後檢查文件的文件名是否與idnumber相同 – user6007010

+0

是否可以在Machine1上設置SQL Server並在Machine2上設置DBTest在Machine1上執行存儲過程SQL Server會通知您關於文件的存在? – miroxlav

回答

0

可能存在幾種可能的解決方案。一個最便宜的是:上MACHINE1

  1. Make文件存儲共享,可見光至計算機並映射有作爲網絡驅動器(例如Z:)具有讀+刪除權限。

    MACHINE1:C:\Shared\(映射)→機器2:Z:\

  2. 然後你可以使用SQL命令類似,你已經顯示的步驟,以測試Z:\test_IDNumber1.txt存在,並刪除和文件。

+0

爲什麼映射到什麼時候可以使用UNC? –

+0

@ Nick.McDermaid - 我原本想到UNC,但我不確定它是否有效。我發現它應該讓你是對的,這可以更好。 – miroxlav

相關問題