Не отрабатывает файл.exe в Query Analyzer
exec master .. xp_cmdshell 'c:\temp\qq.exe', то он только создает файл, но записать в него не может. Помогите, пожалуйста, разобраться!!!
Цитата:
On 2002-09-04 1439, alexbuilder wrote
exe-ник, написанный в C++Builder6 формирует текстовый файл и сам по себе успешно отрабатывает. Если его запускать в Query Analyzer
exec master .. xp_cmdshell 'ctempqq.exe', то он только создает файл, но записать в него не может. Помогите, пожалуйста, разобраться!!!
В чем проблема ? Кто чего создает и счем, и чего куда записать не может, чуть поконкретней..
exe-ник, написанный в C++Builder6 формирует текстовый файл и сам по себе успешно отрабатывает. Если его запускать в Query Analyzer:
exec master .. xp_cmdshell 'c:tempqq.exe', то он пересоздает файл для записи в него в режиме w+b данных, но записать в него ничего не может. Хотя exe-ник запускается в Query Analyzer под SA(под бюджетом системного администратора, имеющего самые большие права). Т.е. exe-ник, запущенный в операционной системе может записывать двоичные данные в файл, а запущенный в Query Analyzer может только файл пересоздать, а записать в него ничего не может.
Дело в том, что запуск QA под логином SA еще ничего путного не означает. Процедура cmdshell работает с файловой системой компьютера, а не с базами данных. Это на базы данных у SA права неограниченные. А на файловую систему у него права только в том случае, если АККАУНТ, под которым запущен сервис MSSQLSERVER сетевой (по умолчанию у него всегда local accaunt) и имеет права на файловую систему, которые дал этому аккаунту NT-администратор. Нет прав - процедура не сработает, есть - сработает настолько насколько ей позволено.
Остается предположить, что на файловом уровне даны какие-то экзотические права. Типа "Create Files" разрешено, а "Append Data" - запрещено.
И то разговор я вел про сетевые ресурсы. А если этот диск C:\ находится на том же сервере, где и SQL - сервер, вообще не знаю...