如何通过Azure移动服务访问关系数据(SQL Azure)?

3
我已经寻找了3-4个小时关于Azure移动服务的好教程和文档。我一直看到的教程都是展示如何创建移动服务,连接现有数据库或创建新的数据库,并访问存储在移动服务中创建的表中存储的数据。但我无法找到如何直接访问实际数据库而不是移动服务中制作的存储表格。我不明白为什么不能直接从数据库访问数据,除非这个东西确实像OData服务一样工作,提供一个抽象的数据模型来保护底层数据结构。
我的问题是:如何通过我的Azure移动服务访问我的Sql Azure数据库(关系结构)?
3个回答

3

Adrian,

问题的答案就在你的问题中。移动服务是一个抽象层;这就是为什么你不能直接访问表格的原因。手机发出的请求先到达移动服务,允许你运行逻辑,然后再代表你访问数据库。这样做有很多好处,包括连接池和安全性。关于操作方式的详细信息,请查看MSDN文档上关于移动服务REST协议的说明。

谢谢 Herve


3
这里有一篇博客文章,讲解如何从Windows Azure移动服务定制API中公开现有的SQL数据库。您可以直接从JavaScript端进行SQL查询。请点击链接查看:这里的博客文章
exports.get = function(request, response) {
   var id = request.query.id;
   request.service.mssql.query(
      'select * from Person join Orders on Person.ID = Orders.PersonID where Person.id = ' + id, {
      success: function(results) {
         response.send(200, results);
      }
   });
};

有关mssql对象的更多文档。


1

正如Herve Roggero所指出的那样,移动服务 RESTful API 是访问 SQL Azure 数据表的建议方式。而移动服务的整个理念是将数据访问和修改的负担从应用程序转移到云托管服务。

如果您仍然想要“直接”访问数据表,则有以下几种方式:

在服务器脚本中,您可以使用全局变量mssql针对数据库运行 SQL 查询,检索数据,修改或插入它们。

mssql.query('select top 1 * from statusupdates',    
     { success: function(results) 
            {
            console.log(results); 
            } 
        }
); 

如果您有其他云托管服务(Web或工作角色),并激活了内部请求的防火墙访问,则可以使用TDS协议访问SQL Azure服务器,并根据您的喜好操作数据。
最后,您可以打开SQL Azure上的防火墙,以便您可以从外部网络连接到它,并再次在客户端上使用TDS协议进行数据库通信。但我不会称这三种方法为“通过移动服务”,而是“从内部”(1)和“绕过它们”(2,3)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接