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

Откуда:
Сообщений: 213
Всем привет.
Добавил процедуру для загрузки файлов с помощью ADODB.Stream. Однако, выполнение процедуры выдаёт ошибку на методе LoadFromFile: "Не удается открыть файл".
Проблемы с доступом исключены, тот же код из RAD Studio успешно загружает файл.
Кто-нибудь сталкивался с подобной ошибкой?
И есть ли какая-нибудь альтернатива ADODB.Stream? BULK INSERT мне не подойдёт, к сожалению

alter PROC _LoadFromFile(@Filename VARCHAR(255))
AS
BEGIN
  DECLARE @NewFileName NVARCHAR(255) SET @NewFileName = @Filename
  DECLARE @HR int
  DECLARE @Stream int
  DECLARE @Buffer binary(5000)
  DECLARE @Size int
  DECLARE @Pos int SET @Pos = 0
  DECLARE @BufSize int SET @BufSize = 4096
  DECLARE @Image varbinary(16) 
  DECLARE @Object int
  DECLARE @Source nvarchar(255), @Desc nvarchar(255)
  
  -- Инициализируем поток
  EXEC @HR = sp_OACreate 'ADODB.Stream', @Stream OUT
  print @HR
  EXEC @HR = sp_OASetProperty @Stream, 'Type',1
  print @HR
  EXEC @HR = sp_OAMethod @Stream,'Open'
  print @HR
  print @Filename
  EXEC @HR = sp_OAMethod @Stream,'LoadFromFile', NULL, @Filename
  print @HR
  
  IF @HR <> 0
  BEGIN    
    EXEC sp_OAGetErrorInfo @Object,
        @Source OUT,
        @Desc OUT;
    SELECT HR = convert(varbinary(4),@HR),
        Source=@Source,
        Description=@Desc;
  END  
  
  EXEC @HR = sp_OAGetProperty @Stream, 'Size', @Size OUTPUT
  print @HR
  print @Size

  EXEC @HR = sp_OAMethod @Stream, 'Read', @Buffer OUTPUT, @Size
  print @HR
  INSERT INTO [ayTest] ([NameStage] ,[Desc])
     VALUES
           ('Some text' , @Buffer)
           
  
  -- Освобождаем поток
  EXEC @HR = sp_OAMethod @Stream, 'Close'
  EXEC @HR = sp_OADestroy @Stream 
END
7 сен 15, 13:54    [18118503]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Glory
Member

Откуда:
Сообщений: 104751
Papadopulos
Проблемы с доступом исключены, тот же код из RAD Studio успешно загружает файл.

А ваша RAD Studio и MSSQL под одной учетной записью работают ?
7 сен 15, 13:56    [18118527]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Glory
Member

Откуда:
Сообщений: 104751
Papadopulos
И есть ли какая-нибудь альтернатива ADODB.Stream? BULK INSERT мне не подойдёт, к сожалению

Не "насиловать" сервер, а делать это в клиентском приложении
Либо начать использовать filestream/filetable
7 сен 15, 13:58    [18118545]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
alter PROC _LoadFromFile(@Filename VARCHAR(255))
AS
BEGIN
  DECLARE @NewFileName NVARCHAR(255) SET @NewFileName = @Filename


проверьте наименование файла
7 сен 15, 14:04    [18118587]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Glory, да RAD Studio и MSSQL работают под одной учёткой
7 сен 15, 14:10    [18118623]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Konst_One,

Тут всё норм
7 сен 15, 14:10    [18118626]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
и конечно этот файл, что вы пытаетесь открыть, у вас локально находится на сервер SQL ?
7 сен 15, 14:12    [18118643]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Glory
Member

Откуда:
Сообщений: 104751
Papadopulos
Glory, да RAD Studio и MSSQL работают под одной учёткой

И какая же это учетка ?
7 сен 15, 14:13    [18118646]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Glory,
Glory
Не "насиловать" сервер, а делать это в клиентском приложении
Либо начать использовать filestream/filetable

Понял.
Будьте добры, скажите, если я объявлю процедуру так..
create PROC _LoadFromFile(@FileContent varbinary(max))  

то в какой тип данных в RAD Studio нужно преобразовать содержимое файла, чтобы SQL нормально его принял?
7 сен 15, 14:15    [18118661]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Glory
Papadopulos
Glory, да RAD Studio и MSSQL работают под одной учёткой

И какая же это учетка ?

Моя доменная учетка
7 сен 15, 14:15    [18118667]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Glory
Member

Откуда:
Сообщений: 104751
Papadopulos
то в какой тип данных в RAD Studio нужно преобразовать содержимое файла, чтобы SQL нормально его принял?

Спросите об этом в форуме по RAD Studio
7 сен 15, 14:16    [18118671]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Glory
Member

Откуда:
Сообщений: 104751
Papadopulos
Glory
пропущено...

И какая же это учетка ?

Моя доменная учетка

Вы не пробовали проверять наличие файла в процедуре ?
7 сен 15, 14:17    [18118681]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Konst_One
и конечно этот файл, что вы пытаетесь открыть, у вас локально находится на сервер SQL ?

Он на клиенте..
Спасибо))
7 сен 15, 14:17    [18118682]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
https://msdn.microsoft.com/ru-ru/library/ms188362(v=SQL.120).aspx
7 сен 15, 14:17    [18118687]     Ответить | Цитировать Сообщить модератору
 Re: Не отрабатывает загрузка файла в ADODB.Stream  [new]
Papadopulos
Member

Откуда:
Сообщений: 213
Всем большое спасибо, процедура работает
7 сен 15, 14:27    [18118764]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить