2017-10-31 16 views
2

ローカルSQL Server Expressセットアップを使用してこの設計をテストしました。Azure BlobストレージのファイルをAzure SQLデータベースに読み込みます。

私はSQLデータベースでAzureストレージ にいくつかの.jsonファイルをアップロードし、私は、外部データソースを作成しました:

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

その後、私は私の外部データソースを使用してファイルを照会しようとした:

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

ただし、「can not bulk load。」というエラーメッセージが表示されず、「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ドキュメントの1週間後に公開されていますが、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が公開されていない場合に備えて、キーオプションがあります。スコープ付きの資格情報オプションを持つプライベートブロブで試してみました。 nnb SASキーを使用している場合は、先頭にある?を削除してください。文字列は、次に示すようにsvで始まるようにしてください。

blobcontainer/my_test_doc.jsonセクションに正しいパスが指定されていることを確認してください。 container/file。これらdocs

関連する問題