2017-10-31 3 views
2

로컬 SQL Server Express 설치를 사용하여이 디자인을 이미 테스트했습니다. Azure Blob 저장소에서 Azure SQL 데이터베이스로 파일을 읽습니다.

CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH (TYPE = BLOB_STORAGE, LOCATION = 'https://mydatafilestest.blob.core.windows.net/my_dir );

가 그럼 난 사용하여 파일을 쿼리 내 외부 데이터 소스 시도 : 내가 SQL 데이터베이스에 푸른 저장 에 여러 .json 파일을 업로드

, 나는 외부 데이터 소스를 생성

select * 
from OPENROWSET 
(BULK 'my_test_doc.json', DATA_SOURCE = 'MyAzureStorage', SINGLE_CLOB) as data 

그러나 "이 파일을로드 할 수 없습니다."prod_EnvBlow.json "파일이 없거나 파일 액세스 권한이 없습니다."라는 오류 메시지와 함께 실패했습니다.

여기에 설명 된대로 파일 저장 공간에 액세스하려면 데이터베이스 범위가 설정된 인증을 구성해야합니까? https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-scoped-credential-transact-sql

그 밖의 무엇이 잘못되었거나 올바르게 수정해야합니까?

+0

에서 제공

CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2017****************'; CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage WITH (TYPE = BLOB_STORAGE, LOCATION = 'https://yourstorage.blob.core.windows.net', CREDENTIAL= MyAzureBlobStorageCredential); DECLARE @json varchar(max) SELECT @json = BulkColumn FROM OPENROWSET(BULK 'blobcontainer/my_test_doc.json', SINGLE_BLOB, DATA_SOURCE = 'MyAzureBlobStorage', FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage') as j; select @json; 

더 많은 세부 사항 당신은 결국이 작업을 수행 할 수있는 방법을 찾았나요? (즉,'OPENROWSET'을 사용하지 않습니다.) – joshi123

+0

@ joshi123 - 저는 이것을 꽤 오래 방문하지 못해 업데이트가 없습니다. – CarCrazyBen

+0

해결책을 찾았습니다. 아래 답변을 참조하십시오! – joshi123

답변

2

OPENROWSET은 현재 documentation page에서 설명한대로 Azure SQL 데이터베이스에서 지원되지 않습니다. BULK INSERT을 사용하여 임시 테이블에 데이터를 삽입 한 다음이 테이블을 쿼리 할 수 ​​있습니다. BULK INSERT에 관한 문서는 this page을 참조하십시오.

+0

이 문서는'OPENROWSET' 문서 다음 주에 출판되었지만 SQL Azure에서 OPENROWSET이 지원된다고 나와 있습니다. https://docs.microsoft.com/en-us/sql/relational-databases/json/import-json-documents-into-sql-server -이 기능이 공개 미리보기 인 https : // azure에있는 것 같습니다. microsoft.com/en-gb/roadmap/files-from-azure-blob-storage-to-sql-database/ – joshi123

0

이제 OPENROWSET이 공개 미리보기에 있습니다. 다음 내용이 적용됩니다. 핵심 옵션은 당신의 BLOB가 공개가 아닌 경우를위한 것입니다. 나는 scoped credential 옵션을 가진 개인 BLOB에서 그것을 시도해 보았다. nnb SAS 키를 사용하는 경우 선두 문자 인 ?을 삭제해야하므로 문자열은 아래 그림과 같이 sv으로 시작해야합니다.

blobcontainer/my_test_doc.json 섹션에 올바른 경로가 지정되어 있는지 확인하십시오. container/file. 이 docs

관련 문제