2016-03-15 3 views
0

У меня есть два тестовых машины. я не знаю, если это возможно, но вот то, что им пытаются сделатьSQL: проверить наличие файла на локальном компьютере, когда я подключен к другому серверу базы данных

  1. MACHINE1: есть установка

    DbServer, где я в настоящее время вошли в систему

    где файл C: \ test_IDNumber1 .txt расположен

    где я использую SSMS. я подключиться к machine2 \ SQLServer

  2. machine2: есть установка DbServer

    , где находится DbServer для DBTEST

    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 на machine2 и файл с mACHINE1

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

но результат существования всегда 0, так как он проверяет C привод machine2 где DBTEST находится.

Есть ли способ использовать скрипт select из db из Machine2 и проверить наличие файла с Machine1?

большое спасибо

+2

Почему серверу баз данных необходимо проверить файл на удаленной машине? Чего вы пытаетесь достичь? – miroxlav

+0

Привет @miroxlav, имя файла, который я пытаюсь проверить, из базы данных.мне нужно сначала выбрать idnumber из базы данных, а затем проверить, существует ли файл с именем файла, аналогичным idnumber – user6007010

+0

. Можно ли настроить SQL Server на Machine1 и из DBTest на Machine2 выполнить хранимую процедуру на Machine1 SQL Server, которая сообщит вам о существовании файла? – miroxlav

ответ

0

Возможны несколько возможных решений. Одним из наименее дорогим является:

  1. Сделать хранение файлов на MACHINE1 совместно, видна machine2 и отображается там как сетевой диск (например, Z:) с прочитанным + удаление разрешений.

    Machine1: C:\Shared\ (отображение) → machine2: Z:\

  2. Затем вы можете использовать SQL команды, аналогичные тем, что вы уже показать ступенчато и для того, чтобы проверить наличие Z:\test_IDNumber1.txt и удалить файл.

+0

Зачем называть карту, когда вы можете UNC? –

+0

@ Nick.McDermaid - Я изначально думал о UNC, но я не был уверен, работает ли он. Я обнаружил, что это должно быть правильно, это может быть лучше. – miroxlav