SQL azure中的参考blob存储数据

时间:2012-01-06 12:28:13

标签: azure azure-sql-database azure-storage azure-storage-blobs

我只是想知道是否可以在SQL Azure表格列中引用azure blob存储数据?

例如,假设我的SQL Azure数据库中有一个名为Users的表,该表中的一列是UserImage,而不是创建UserImage作为varbinary(MAX)和将图像数据直接存储在表中,我希望将图像数据存储在blob存储中,获取对blob数据的引用并将该引用存储在UserImagevarchar ??)列中在数据库中,然后以某种方式,当从Users表中读取行时,使用对该数据的引用从blob存储中访问关联的图像数据。

我问这个是因为blob存储比直接在SQL Azure中使用的二进制/ blob数据便宜得多。

3 个答案:

答案 0 :(得分:5)

您应该只将图像存储在SQL Azure中,这是一个简短的片段,用于将图像上传到Blob存储并获取其Url:

    // Fake stream that contains your image to upload
    Stream data; 

    // Get a handle on account, create a blob service client and get container proxy
    var container = Account.CreateCloudBlobClient()
                        .GetContainerReference("my-fake-container");

    // Create a blob in container and upload image bytes to it
    var blob = container.GetBlobReference("my-fake-id");
    blob.Properties.ContentType = "image/jpeg";
    blob.UploadFromStream(data);

    // Get your iage Url in the Blob storage
    var imageUrl = blob.Uri;

您现在只需将imageUrl存储在您的行中。

答案 1 :(得分:3)

您应该能够将URL存储到SQL Azure中的图像,并让客户端程序解析URL并显示URL中的图像。

我想不出有任何方法可以让SQL Azure直接进入Blob存储,我也不需要这样做,因为大多数客户端程序都可以使用URL以及BLOB。

答案 2 :(得分:0)

是....你可以通过在SQL Azure或其他地方存储url,然后获取url并将其传递给blob对象来实现这一点

void DoSthWithBlob(Uri blobUri, StorageCredentials credentials){
    var blob = new CloudBlob(blobUri, credentials);
    blob.FetchAttributes();           
}