powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверить доступность файла перед использованием OPENROWSET
11 сообщений из 11, страница 1 из 1
Проверить доступность файла перед использованием OPENROWSET
    #40098663
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Проверить наличие файла то это можно при помощи xp_fileexist.
А как проверить, что файл в это время не открыт другим пользователем?
При обращении OPENROWSET к открытому файлу вываливается ошибка.
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099073
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Gavrysh_,

Вы должны понимать, что это не задачи SQL сервера...
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099207
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
Файл Файл.xlsx открыт.
if exists(select 1
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=1;Database=D:\Файл.xlsx','SELECT * FROM [Sheet1$]') )
select 1
else
select 0

Получаем:
Сообщение 7399, уровень 16, состояние 1, строка 2
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
Сообщение 7303, уровень 16, состояние 1, строка 2
Не удалось проинициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)".

Есть возможность в процедуре обойти\отследить ошибку?
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099208
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А Try Catch не работает?
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099219
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN TRY
select top(1) 1
FROM  OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=1;Database=E:\Файл.xlsx','SELECT * FROM [Sheet1$]')
--select 1/0
END TRY
	
BEGIN CATCH
SELECT ERROR_SEVERITY() AS ErrorSeverity;  
END  CATCH;



Ой, кажется работает))
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099226
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare @e int = 0
	
BEGIN TRY
  select top(1) @e =  1
  FROM  OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=1;Database=E:\Файд.xlsx','SELECT * FROM [Sheet1$]')
 --select 1/0
END TRY
	
BEGIN CATCH
  SELECT @e = ERROR_SEVERITY()  
END  CATCH;

if @e = 1  print 'Файл доступен'
if @e = 16 print 'Файл не доступен'
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099230
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причём проверяет не только доступность файла но и его наличие.
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099300
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Gavrysh_,

это уровень "что-то пошло не так", но вы не сможете понять - что именно.
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099386
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
Согласен. Но круг поиска "что то не так" сильно сужается. Практически до нуля.
В этом случае лучше будет не "Файл не доступен" а "С источником, что то не так"
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099434
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Gavrysh_,

если нет прав доступа, то вы увидите ту же ошибку. В корпоративных системах, к примеру, права доступа могут неожиданно исчезнуть, и будете ломать голову - файл есть, но его нет :) Это, конечно, лучше, чем ничего.
...
Рейтинг: 0 / 0
Проверить доступность файла перед использованием OPENROWSET
    #40099437
_Gavrysh_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
Согласен.
По крайне мере могу выдать сообщение на почту и продолжать дальнейшие действия без глобального выброса из процедуры.
А дальше разбираться детально с причиной не доступности файла.
В моём случае обращение к файлам всегда идёт от админа. Поэтому остаются варианты:
1.Имя файла не то
2.Файл открыт
3.Лист не тот (не Sheet1)
4.??? - пока не знаю

Отсутствие доступа SQL сервера к папке с файлами... Ну это уже глобальный сбой.
Да, согласен. Это лучше, чем вообще ни чего.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверить доступность файла перед использованием OPENROWSET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]