Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Близкие родственники xp_fileexist  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Добрый день, подскажите, пожалуйста, есть ли в MS SQL какое-нибудь средство, позволяющее узнать размер и, может быть, дату создания/модификации избранного файла на диске. Т.е. что-то типа master..xp_fileexist , но чтобы оно сообщало не просто о факте наличия файла, а возвращало хотя бы размер. Версия сервера

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Кстати, пытался найти в BOL описания процедур, относящихся к одной логической группе с xp_fileexist, и... не нашел там самой xp_fileexist. Как это можно понять? Где описание?
29 мар 12, 15:23    [12334308]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
xp_cmdshell + dir
Или сборку напишите.
29 мар 12, 15:36    [12334434]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Shlippenbaranus
Кстати, пытался найти в BOL описания процедур, относящихся к одной логической группе с xp_fileexist, и... не нашел там самой xp_fileexist. Как это можно понять? Где описание?
Это недокментированная процедура

https://www.sql.ru/articles/mssql/01070203usefulundocumentedextendedstoredpprocedures.shtml


Shlippenbaranus
есть ли в MS SQL какое-нибудь средство, позволяющее узнать размер и, может быть, дату создания/модификации избранного файла на диске
Нет, только используя xp_cmdshell
29 мар 12, 15:37    [12334440]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Shlippenbaranus,

можно ещё и в гугле искать, тогда можно обнаружить, что xp_fileexist - недокументированная процедура, т.е. производитель сервера официально не предоставляет её для использования. а функции операционной системы можно использовать через xp_cmdshell
29 мар 12, 15:37    [12334441]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
tunknown
Member

Откуда:
Сообщений: 777
Shlippenbaranus
в MS SQL какое-нибудь средство, позволяющее узнать размер


Можно попробовать вариации на тему
exec @OLEError=sp_OACreate 'Scripting.FileSystemObject', @FSO out

более подробно искать здесь. Применять с осторожностью.
29 мар 12, 15:56    [12334588]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Гавриленко Сергей Алексеевич,
alexeyvg,
Shakill,

Спасибо откликнувшимся!

Действительно, можно вызывать dir через xp_cmdshell, и парсить результат. Дурное дело не хитрое, так я и сделал. Но: как мне обрести уверенность, что код, который я написал будет работать всегда, на любой windows, независимо от изменений в настройках? Имхо, никак: с нужной для счастия точностью формат вывода dir не определен. Я не могу указать, в каком формате будет отдаваться дата, я не знаю, будут ли между полями пробелы, или появится <Tab>, сколько будет пробелов, т.п. Максимум, что можно сделать - задать при вызове dir максимум всяких ключей, чтобы изменения в "дефолтном" наборе из переменной DIRCMD не имели влияния. И помолиться :).

Или я ошибаюсь?
29 мар 12, 16:01    [12334637]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
tunknown
Можно попробовать вариации на тему....


Спасибо, пошел изучать.
29 мар 12, 16:03    [12334659]     Ответить | Цитировать Сообщить модератору
 Re: Близкие родственники xp_fileexist  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Shlippenbaranus
Имхо, никак: с нужной для счастия точностью формат вывода dir не определен. Я не могу указать, в каком формате будет отдаваться дата, я не знаю, будут ли между полями пробелы, или появится <Tab>, сколько будет пробелов, т.п. Максимум, что можно сделать - задать при вызове dir максимум всяких ключей, чтобы изменения в "дефолтном" наборе из переменной DIRCMD не имели влияния. И помолиться :).

Или я ошибаюсь?
Да, никак :-(

Ещё можно CLR свою написать, или делать такие вещи только из приложения.
29 мар 12, 16:09    [12334724]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить