Я пытаюсь создать хранимую процедуру, которая будет обращаться к файлу в контейнере хранилища 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-объектах, и, насколько я могу судить, уровни доступа на них одинаковы.