Как исправить ошибку «Код операционной системы 12007» при обращении к хранилищу BLOB-объектов Azure в хранимой процедуре SQL - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь создать хранимую процедуру, которая будет обращаться к файлу в контейнере хранилища BLOB-объектов Azure, сохранять первую строку файла во временном файле, использовать эти данные для создания таблицы (эффективно используя поля заголовка вфайл в качестве заголовков столбцов), а затем заполните файл остальными данными.

Я попробовал базовый процесс в локальной базе данных SQL, используя локальный исходный файл на моем компьютере, иСама процедура работает так, как я хочу, создавая новую таблицу из предоставленного файла.

Однако, когда я настроил ее в базе данных SQL Azure и изменил процедуру, чтобы использовать «источник данных» вместоуказывая его на локальный файл, он выдает следующую ошибку:

 Cannot bulk load because the file "my_example_file" could not be opened. Operating system error code 12007(failed to retrieve text for this error. Reason: 317).

Моя хранимая процедура содержит следующее:

 CREATE TABLE [TempColumnTitleTable] ([ColumnTitles] [nvarchar](max)
 NULL);
 DECLARE @Sql NVARCHAR(Max) = 'BULK INSERT [dbo].   
 [TempColumnTitleTable]     FROM ''' + @fileName + ''' WITH
 (DATA_SOURCE     = ''Source_File_Blob'', DATAFILETYPE = ''char'', 
 FIRSTROW = 1, LASTROW =     1,     ROWTERMINATOR = ''0x0a'')';
 EXEC(@Sql);

Выше следует создать таблицу из одного столбца, содержащую всетекст для заголовков, который я затем могу запросить и использовать для заголовков столбцов в моем постоянном файле.Я настроил источник данных следующим образом:

 CREATE EXTERNAL DATA SOURCE Source_File_Blob
 WITH ( 
 TYPE       = BLOB_STORAGE,
 LOCATION   = 'location_url',
 CREDENTIAL = AzureBlobCredential
 );

с соответствующими учетными данными на месте!

Я ожидаю, что он заполнит файл заголовка моего временного столбца (а затем продолжит ивыполните другое заполнение, которое я не показал для кода выше), но оно просто возвращает указанный код ошибки.

У меня был Google, но код ошибки, похоже, связан с другим «путем»проблемы типа, которые я не думаю, применимы здесь.

У нас есть похожие процессы, которые используют хранилище BLOB-объектов с одинаковыми учетными данными, и все они, кажется, работают нормально, но проблема в том, что человек, который их написал, больше не в нашей компании, поэтому я могу 'на самом деле посоветуйтесь с ними!

Итак, что же может вызвать эту ошибку?Я не думаю, что это доступ, так как я могу запускать похожие процессы на других BLOB-объектах, и, насколько я могу судить, уровни доступа на них одинаковы.

1 Ответ

0 голосов
/ 03 июня 2019

Да - использовал неправильный URL в качестве префикса.Только когда я наконец получил доступ к хранилищу больших двоичных объектов, я понял.

...