2013-05-29 4 views
0

У меня есть код SQL следующим образом:xp_cmdshell работает только для абсолютных путей к файлу?

SET @FILEE = '..\mydb.sql'; 
DECLARE @cmd NVARCHAR(1000); 
SET @cmd = 'SQLCMD -S (local)\MYSQL -i' + @FILEE 
exec xp_cmdshell @cmd; 

Это всегда дает ошибку: SqlCmd:'..\mydb.sql': invalid filename.

Если я кладу в чем-то вроде: C:\mydb.sql, он работает .... но не для ссылочного файла, как выше .. где указан путь к файлу со ссылкой на местоположение текущего файла.

Любые указатели на то, как обойти это?

Если нет, можно ли указать ссылку на VOB?

ответ

2

SQLCMD будет работать с относительными путями файлов при правильном указании - проблема, с которой вы сталкиваетесь, заключается в том, что рабочий каталог, который начинается xp_cmdshell, не является каталогом, который вы ожидаете.

Вы можете увидеть начальный каталог, выполнив следующую команду:

xp_cmdshell 'cd' 

По умолчанию я думаю, что это, как правило, каталог операционной системы \system32 (обычно C:\Windows\system32, но, очевидно, это может варьироваться в зависимости от деталей из Windows)

Ваши обходные пути - указать абсолютный путь (как вы уже обнаружили) или использовать команду CD для переключения на другой рабочий каталог, из которого относительный путь, который вы хотите использовать, является правильным.

Смежные вопросы