SQL Azure 常见问题 (zh-CN)
SQL Azure 数据库是 Microsoft 提供的基于云的关系数据库服务。SQL Azure 能够以实用工具服务的形式提供关系数据库功能。基于云的数据库解决方案(如 SQL Azure)可以提供很多好处,包括快速设置、经济高效的可扩展性、高可用性,并且能够降低管理开销。本文档介绍客户提出的一些最常见问题。
目录:
售前
问题:SQL Azure 和 SQL Server 的差别
尽管 SQL Server 和 SQL Azure 有时处理相同的应用程序工作负荷,但一个是采用软件许可模式的传统数据库服务器,而另一个是服务形式的云数据库,它在 Microsoft 的全局数据中心运行,以即付即用模式或承付款率计划模式提供。您可以通过这两种产品轻松选择最符合您的技术需求的平台和业务模型。
SQL Server 是企业级数据库服务器,可提供“纵向扩展”关系数据存储并能够处理一组广泛的内部部署应用程序类型和方案。SQL Server 不是服务产品,并且不采用即付即用消费模式。SQL Server 按每服务器或每处理器获得许可,并且涉及一套丰富的服务器硬件。SQL Server 在您的数据中心或者托管提供商数据中心中的硬件上运行。
SQL Azure 是高度可用的分布式“横向扩展”数据库服务,由 Microsoft 在云中托管。借助 SQL Azure,可以服务的形式轻松设置和部署关系数据库功能。开发人员或管理员不必安装、设置以及修补或管理任何软件。高可用性、备份和恢复、地理分布以及灾难恢复内置于该项服务中。
除了纵向扩展/横向扩展差异之外,操作模式也存在重大差异。因为 SQL Azure 服务涵盖了硬件和操作系统管理,所以您可以集中精力构建解决方案,而不是采购、管理、修补和许可硬件、虚拟机、操作系统和应用程序平台软件。而对于专用数据库服务器(无论是作为传统服务器在内部部署中安装、托管在虚拟机中还是由第三方服务提供商托管),开发人员和 IT 专业人员仍要负责安装、设置、更新和修补操作系统和数据库软件。此外,数据库服务器的用户还必须设计他们自己的高可用性、横向扩展和灾难恢复解决方案,因此增加了总管理成本。
SQL Azure 针对需要以低于传统纵向扩展体系结构的成本提供高度扩展和高可用性的应用程序进行设计和优化。因此,SQL Azure 能够在商用硬件上提供高度可用的横向扩展解决方案,并以服务的形式提供数据库功能。
问题:SQL Azure 的扩展方法是什么?是否限制可以在 SQL Azure 中存储的数据的大小?
SQL Azure 已针对需要以低于传统纵向扩展体系结构的成本提供高度扩展和高可用性的应用程序进行了优化。因此,SQL Azure 能够在商用硬件上提供高度可用且高度可扩展的解决方案。为了从这种平台获得最大的益处,我们自然而然地采用了使用较小分区进行横向扩展的解决方案,放弃了使用传统单服务器纵向扩展的模式。
SQL Azure 支持大小高达 TB 的数据集。单个 SQL Azure 数据库的大小可以高达 150GB。对于大于 150 GB 的数据集,可以使用行业标准方法将其分区到多个 Azure 数据库中。例如,SaaS ISV 可以轻松地为每个客户提供他们自己的数据库,而零售商可以按区域将销售数据分区到多个数据库中。
还请注意,每个数据库 150GB 的限制不包括自动保留以实现高可用性的其他数据副本、事务日志或系统级表。
问题:我们所说的“Web Edition 包含高达 5 GB 数据库/月”或者“Business Edition 包含高达 50GB 数据库/月”实际上是什么意思?
您可以为一个或多个应用程序提供 SQL Azure 中的多个数据库。数据库可以是 Web 或 Business Edition 数据库。单个 Web Edition 数据库可以支持高达 5 GB 的数据。1GB 和 5GB 是计费增量。单个 Business Edition 数据库将支持高达 150 GB 的数据。Business Edition 使用 10 GB 计费增量(10GB、20GB、30GB、40GB、50GB ...)。
计费标准是按照一天中的数据库大小峰值,然后向上取整到下一个计费增量。
示例:
假定我们的 Web Edition 数据库的最大大小为 5GB。如果数据库大小为 800MB,则 Web Edition 数据库的每日费用将采用 1GB 的费率。如果第二天,数据库大小增加到 3GB,则该日的日费用将基于 Web Edition 的下一计费增量 (5GB)。如果第三天,在删除一些数据后数据库大小减小到 900MB,则每日费用将重新基于 1GB。
此示例也适用于 Business Edition 数据库。假定我们的 Business Edition 数据库的最大大小为 50GB。如果总��据库大小为 8GB,则数据库的每日费用将采用 10GB 的费率。如果第二天,数据库大小增加到 25GB,则每日费用将基于 Business Edition 的下一计费增量,即 30GB,依此类推。
每日费用为相应计费增量的每月费率除以当月中的天数。
问题:SQL Azure 与我和使用 SQL Server 2008/SPLA 的本地托管提供商合作有什么区别?
对于专用托管数据库,开发人员和 IT 专业人员仍要负责安装、设置、更新和修补操作系统和数据库软件。此外,托管数据库解决方案的用户还必须设计他们自己的高可用性、横向扩展和灾难恢复解决方案,因此增加了总管理成本。
SQL Azure 是高度可用的分布式可扩展数据库服务,由 Microsoft 在云中托管。借助 SQL Azure,可以服务的形式轻松设置和部署关系数据库。开发人员不必安装、设置以及修补或管理任何软件。高可用性、备份和恢复、地理分布以及灾难恢复内置于该项服务中。
问题:SQL Azure 定价与 SQL Server 定价相比怎么样?
它们是不同的产品(一个是数据库服务器,另一个是云服务),所以不能按价格直接比较这两种产品。SQL Server 是通过软件许可证购买的。而 SQL Azure 是云服务,它的定价反映与服务器硬件、软件、网络带宽、存储和运行 SQL Azure 的硬件管理相关联的成本。我们已对每个产品进行了设计,以便您能够轻松选择最符合您的需求的平台和业务模型。
问题:如果我在 SQL Azure 平台上构建应用程序,是否可以将它����移到内部部署或托管服务器?
利用 SQL Azure 的很多应用程序可以轻松移植到内部部署或托管 SQL Server 上。尽管一些应用程序可能需要重新设��体系结构才能在 SQL Server 上运行,但 SQL Azure 与 SQL Server 支持以 TDS 为基础的基于 T-SQL 的相同关系模型,因此,通常只需对解决方案进行很少的更改即可迁移现有自定义和 LOB 打包应用程序。
问题:我在 SQL Azure 上能否凭借现有 SQL Server 许可证获得相应许可?
不可以。我们当前不支持 SQL Server 许可证迁移。
问题:SQL Azure 实际上是不是 SQL Server 2008 R2 之后的下一 SQL Server 版本?
不是。SQL Azure 是以服务形式提供的云数据库,独立于 SQL Server。SQL Azure 是横向扩展平台服务,以服务形式向您提供按需关系数据库。尽管 SQL Azure 和 SQL Server 产品具有不同的开发计划,但它们具有相似的代码路径并且积极共享新功能和创新。
问题:新 Windows Azure 平台是否意味着客户能够将他们将来和现有的所有应用程序移动到云中?
作为其软件加服务 (S+S) 策略的一部分,Microsoft 为您提供了使用内部部署技术、云技术或同时使用这两项技术的灵活性。客户已经对根据业务需求灵活地选择部署方式表现出浓厚的兴趣。Microsoft 将继续进行大量投资,以创新和交付新版本的 Windows Server、Windows Azure、SQL Server、SQL Azure 和 System Center,从而确保无论您的应用程序在您自己的数据中心中运行、还是在 Microsoft 托管合作伙伴的数据中心或我们的公共云环境中运行,您都能够享受到云计算技术带来的好处。
问题:SQL Azure Data Sync 服务有何价值?
SQL Azure Data Sync 通过双向数据同步在 SQL Azure 和 SQL Server 数据库之间提供数据移动可管理性。使用 SQL Azure Data Sync,组织可以利用 SQL Azure 和 Microsoft Sync Framework 的强大功能在云中构建业务数据中枢,从而允许与多个 SQL Azure 数据中心、移动用户、业务合作伙伴、远程办公室和企业数据源轻松共享信息,同时利用云中的新服务。这种结合方式架起了一道桥梁,允许内部部署和外部部署应用程序协同工作。您可以在 SQL Azure 社区技术预览版中注册 SQL Azure Data Sync 的社区技术预览版 (CTP)。
使用 SQL Azure Data Sync 可以:
将现有 SQL Azure 数据库扩展到全球的一个或多个数据中心,以便能够在不同地理位置进行数据访问。
将现有内部部署 SQL Server 数据链接到 SQL Azure,从而允许在 Windows Azure 中创建新应用程序而不放弃现有内部部署应用程序。
使基于 Windows Azure 和 SQL Azure 的应用程序脱机,以提供“类似于 Outlook”的缓存模式体验。
通过云将内部部署数据扩展到远程办公室、零售店和移动工作人员。
问题:支持的 SQL Azure Data Sync 服务版本何时发布?
当前,SQL Azure DataSync 服务作为社区技术预览版 (CTP) 提供,我们将在此公共预览期间倾听客户反馈,以帮助我们确定需要完成哪些工作才能确保向客户提供最佳价值;因此,发布日期将取决于客户,即处理客户反馈需要进行的更改的复杂性。
问题:客户是否需要为 DataSync 服务付费?
Data Sync 服务目前不产生任何费用;然而,您仍需支付在 SQL Azure 数据库中移入和移出数据产生的相应数据传输费用。有关此定价的更多详细信息,请访问 http://www.microsoft.com/windowsazure/pricing/。
连接
问题:如何连接到 SQL Azure?
随 SQL Server 2008 R2 发布的 SQL Server Management Studio (SSMS) 版本在连接方面为 SQL Azure 提供全面支持。如果您使用的是 SSMS 的早期版本,则在“连接”窗口(首次打开 Management Studio 时显示)中输入服务器名称和用户凭据时将显示以下错误消息。
若要解决此错误,请执行以下步骤:
1.在“连接到服务器”错误上单击“确定”,然后单击连接窗口中的“取消”。
2.单击“新建查询”图标。
3.在出现的“连接到服务器”对话框中,输入您的连接凭据。
注意:登录名应该采用以下格式:用户名**@服务器名称**
如果需要连接到特定数据库,请单击“选项”按钮,并在“连接到数据库”框中输入数据库名称。
注意:不支持使用 <数据库>。如果需要在登录后连接到另一数据库,请右键单击并单击“更改连接”。
问题:如何检查 Windows Azure 平台运行状况的当前状态?
可以在以下位置检查您的 SQL Azure 数据库区域的“服务仪表板”:http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx。还可以订阅相应的 RSS 源。
问题:我无法连接到 SQL Azure。如何解决此问题?
有关解决常见连接问题的信息,请参阅 SQL Azure 连接故障排除指南。
问题:在哪里可以找到 SQL Azure 的示例连接字符串?
在设置您的服务器时,SQL Azure 门户提供可以在应用程序中使用的连接字符串。下面是通用格式的 ADO.NET 和 ODBC 连接字符串:
ADO.NET
Server=tcp:<sqlazureservername>.database.windows.net;Database=<databasename>;
User ID=user@<sqlazureservername>;Password=password;Trusted_Connection=False;
ODBC
Driver={SQL Server Native Client 10.0};Server=tcp:<sqlazureservername>
.database.windows.net;Database=<databasename>;
Uid=user@<sqlazureservername>;Pwd=password;Encrypt=yes;
问题:我是否可以备份存储在 SQL Azure 中的数据?如何从数据损坏或数据丢失情形中恢复?
通常,最佳做法是创建备份来从逻辑数据丢失或损坏(例如,用户应用程序意外删除数据)情形中恢复。SQL Azure 定期运行备份并运行一致性检查以便从硬件故障中恢复,但这是支持服务总体正常运行的内部操作,不向 SQL Azure 用户公开。然而,您可以使用大容量复制实用工具 (BCP) 或 SQL Server Integration Services (SSIS) 随时将数据复制到内部部署 SQL Server 数据库。还可以使用数据库复制功能在相同子分区中创建数据库的副本,该副本在出现用户错误时可用作备份。
问题:是否有可用于在内部部署 SQL Server 和 SQL Azure 之间移动数据的任何动手实验或演示?
Windows Azure 培训包提供有关 SQL Azure(包括迁移数据库)的示例、演示和演示文稿。
问题:如何配置 SQL Azure 防火墙设置?
SQL Azure 防火墙阻止访问 SQL Azure 服务器,除���您专门允许一个 IP 地址。必须首先将需要访问的计算机的 IP 地址添加到防火墙设置中,然后这些计算机才能尝试连接到 SQL Azure 服务器。可以通过 SQL Azure 门户上“服务器管理”页中的“防火墙设置”选项卡完成此操作。还有一个“允许 Microsoft Services 访问此服务器”复选框。选中此复选框将允许从 Windows Azure 中托管的应用程序进行连接。
有关配置防火墙的详细信息,请参阅如何配置 SQL Azure 防火墙。
问题:如何授予我的 Web 角色对 SQL Azure 的访问权限?
选中“允许 Microsoft Services 访问此服务器”复选框,该复选框位于 SQL Azure 门户上“服务器管理”页中的“防火墙设置”选项卡上。
有关配置防火墙的详细信息,请参阅如何���置 SQL Azure 防火墙。
问题:通过网络传播的数据是否安全?
SQL Azure 始终对所有客户端连接强制执行 SSL 加密;然而,如果您的客户端应用程序未在连接时验证证书,则您的连接可能容易受到中间人攻击。
有关连接加密的详细信息,请参阅安全指导原则和限制。
支持/不支持的功能
问题:链接服务器在 SQL Azure 中是否受支持?是否可以在内部部署 SQL Server 和 SQL Azure 服务器之间或者在 SQL Azure 服务器的两个实例之间启用链接服务器?
否,链接服务器当前在 SQL Azure 中不受支持。因此,您不能在内部部署解决方案和 SQL Azure 之间或者在云中启用链接服务器。
问题:SQL Azure 中支持的默认隔离级别是什么?
读提交快照隔离。
问题:更改跟踪在 SQL Azure 中是否受支持?
更改跟踪当前在 SQL Azure 中不受支持。
问题:空间数据类型在 SQL Azure 中是否受支持?
在 SU3(2010 年 6 月)中添加了对空间数据类型的支持。
问题:大容量复制在 SQL Azure 中是否受支持?
支持,大容量复制实用工具 (BCP) 和 SqlBulkCopyAPI 在 SQL Azure 中均受支持。TSQL 命令 BULK INSERT 不受支持。
问题:如果在 IF...Else 循环中包含 DROP Database,则会遇到错误,指出即使连接到 Master 数据库,DROP Database 也不受支持?
这是 SQL Azure 的限制。登录名数据定义语言 (DDL) 必须是批处理中的唯一语句,不能在 IF..ELSE 语句中循环。请参考指导原则和限制。
在 ADO.NET 应用程序中执行 CREATE
/ALTER
/DROP LOGIN
和 CREATE
/DROP DATABASE
语句时,不允许使用参数化命令。上述每个语句必须是 SQL 批处理中的唯一语句。
问题:SQL 代理在 SQL Azure 中是否受支持?
SQL 代理当前在 SQL Azure 中不受支持。
问题:SQL 事件探查器在 SQL Azure 中是否受支持?
SQL 事件探查器当前在 SQL Azure 中不受支持。然而,允许排查某些动态管理视图 (DMV) 中的问题,以帮助诊断性能问题。以下位置提供了详细的 DMV 支持列表:http://msdn.microsoft.com/zh-CN/library/ee336238.aspx#dmv
问题:Service Broker 在 SQL Azure 中是否受支持?
Service Broker 当前在 SQL Azure 中不受支持。
问题:复制功能在 SQL Azure 中是否受支持?能否将数据从内部部署 SQL 复制到 SQL Azure?
复制功能当前在 SQL Azure 中不受支持。但我们提供了以下一些方法:
您可以使用 [[文章:SQL Azure Data Sync|SQL Azure Data Sync]] 在内部部署 SQL Server 和 SQL Azure 之间同步数据,也可以在两个或多个 SQL Azure 服务器之间同步数据。
还可以使用 SQL Server Integration Services (SSIS)、SQL Server Management Studio (SSMS) 或大容量复制实用工具 (BCP) 在内部部署 SQL 和 SQL Azure 之间移动数据。
SQL Azure 迁移向导也提供了在内部部署 SQL Server 和 SQL Azure 之间或者在两个 SQL Azure 实例之间移动数据的功能。
问题:SQL Azure 是否支持 Entity Framework?
支持。SQL Azure 支持 Entity Framework。有关详细信息,请参阅如何:使用 ADO.NET Entity Framework 连接到 SQL Azure。
问题:Reporting Services 或 Analysis Services 或 SSIS 在云解决方案中是否受支持?
已在 PDC 2010 上以社区技术预览版 (CTP) 的形式发布 SQL Azure Reporting。有关详细信息,请参阅 SQL Azure Reporting 简介。您可以通过在 SQL Azure 社区技术预览版中注册来参与 CTP。
SQL 2008 R2(Reporting Services、Analysis Services 和 SSIS)也受 SQL Azure 支持并已进行了优化,它可以作为数据源从内部部署商业智能项目访问 SQL Azure。
问题:SQL Azure 是否支持自动分区机制,以便可以轻松地跨多个数据库对数据进行分区?
当前不支持对 SQL Azure 数据库进行自动分区。用户必须按其应用程序逻辑对数据进行分区。有关详细信息,请参阅 [[使用 SQL Azure 进行分区]]。
SQL Azure Federation 已发布,但尚不可用。通过此功能,可以使用可靠的连接路由机制轻松对数据进行重新分区和重新分发。
问题:SQL Server 错误日志在 SQL Azure 中是否可用?
否,SQL Server 错误日志当前在 SQL Azure 中不可用。
问题:IPV6 是否受支持?
否,IPV6 当前不可用。如果发现这方面的需求增加,我们将提供对 IPV6 的支持。
问题:是否支持从 Excel 连接到 SQL Azure?
Excel 的 Office 2010 版本可以使用 SQL Azure 作为数据源。有关详细信息,请参阅将 Microsoft Excel 连接到 SQL Azure 数据库。
问题:SQL Azure 是否支持 JDBC 驱动程序?
支持,但是需要 SQL Server JDBC Driver 3.0 的特定更新。有关详细信息,请参阅 http://support.microsoft.com/kb/2504052。
问题:SQL Azure 是否支持任何会话状态提供程序?
SQL Azure 不支持会话状态提供程序。有关详细信息,请查看用于 Microsoft SQL Azure 的更新 ASP.NET 脚本。
问题:我在同一服务器上具有两个数据库。是否支持在同一服务器上跨这两个数据库联接表?
不支持跨两个数据库联接表。SQL Azure 服务器是数据库的逻辑分组。同一服务器中的数据库分布在环境的多个节点上。可以在应用程序逻辑中编写扇出查询以完成相同的功能。
问题:SQL Azure 是否支持审核功能?
SQL Azure 的当前版本中不包含审核功能。
问题:因为 RowGUID 列在 SQL Azure 中不受支持,所以建议客户使用的替代方法是什么?
替代方法是使用唯一标识符作为列类型,然后使用 NEWID() 在插入时生成 GUID。
CREATE TABLE MyTest ( MyID UNIQUEIDENTIFIER DEFAULT NEWID() PRIMARY KEY,
Name VARCHAR(10)) INSERT INTO MyTest (name) VALUES ('string1')
INSERT INTO MyTest VALUES (newid(), 'string2')
问题:用于 SQL Azure Servers 的时区是什么?
无论所选的数据中心位置是什么,SQL Azure 服务器都设置为 UTC 时区。SQL Azure 的当前版本不支持更改时区。
问题:对与 SQL Azure 数据库或服务器建立的连接的数目是否有限制?
对可以与数据库或服务器建立的连接的数目没有上限。然而,建议使用连接池来避免初始连接建立成本(查找、SSL 握手、登录过程等)并直接使用您的连接。
问题:SQL Azure 中的服务管理员帐户的密码策略是什么?
密码必须至少包含 8 个字符,并且至少包含一个数字、一个字母和一个符号。密码不能包含用户名中的任何三个连续字符。
问题:对于 SQL Azure,是否可以像 Windows Azure 那样创建多个管理员帐户?
SQL Azure 的当前版本仅支持一个帐户管理员和一个服务管理员帐��。在 SQL Azure 中尚不支持联合管理员功能,因此联合管理员将在 SQL Azure 门户中看到空白订阅列表。在不久的将来,将增加对联合管理员功能的支持。
问题:能否在不打开端口 1433 的情况下连接到 SQL Azure?
可以使用适用于 SQL Azure 的数据库管理器在不打开端口 1433 的情况下连接和管理 SQL Azure。它设计为专门面向以下人员:寻找简单的解决方案以在云中快速开发、部署和管理其数据驱动应用程序的 Web 开发人员和其他技术专业人员。
数据库迁移以及备份/还原
问题:支持的在内部部署 SQL Server 和 SQL Azure 之间移动数据的方法有哪些?
可以通过多种方法在内部部署 SQL Server和 SQL Azure 之间迁移数据。
SQL Server Integration Services (SSIS) 可以与 ADO.NET 连接管理器结合使用,通过启用并行度来改进性能。您还可以根据大小和需要为数据编写脚本。
还可以从 Codeplex 获得由社区开发的不受支持的 脚本编写工具 SQL Azure 迁移向导。
大容量复制实用工具 (BCP):可以使用 BCP 将数据从内部部署 SQL Server 迁移到 SQL Azure,反之亦然。
还可以将生成脚本向导与 SQL Server Management Studio 2008 R2 配合使用以对数据库编写脚本。
在 SQL Server 2008 R2 或更高版本中,导入或导出向导使用适用于 SQL Server 的 .Net 提供程序提供对 SQL Azure 数据库的支持。有关详细信息,请参阅从 SQL Azure 导出数据:导入/导出向导。
另外,还请查看 Windows Azure 培训包中有关从内部部署向 SQL Azure 迁移数据的演示。
问题:如何使用 SQL Server Management Studio 生成与 SQL Azure 兼容的脚本?
随 SQL Server 2008 R2 提供的 SQL Server Management Studio (SSMS) 版本包含对 SQL Azure 的支持。可以从 Microsoft SQL Server 2008 R2 RTM - Management Studio Express 下载 SSMS 的 Express 版本。��要使用 SSMS 生成与 SQL Azure 兼容的脚本,请执行以下步骤:
1.在 SSMS 中,选择数据库,右键单击并选择“任务”,然后选择“生成脚本”。
2.在“设置脚本选项”下,单击“高级”,并将“脚本适用于的数据库引擎类型”设置为“SQL Azure 数据库”。
3.在“设置脚本选项”下,单击“高级”,并将“脚本适用于的数据库引擎类型”设置为“SQL Azure 数据库”。
问题:如何将 MySQL 数据库迁移到 SQL Azure?
适用于 MySQL 1.0 版的 SQL Server Migration Assistant 工具包 2008 可以帮助您将数据库从 MySQL 迁移到 SQL Azure。此工具显著降低了从 MySQL 迁移到 SQL Server 2008 和 SQL Azure 的工作量、成本和风险。适用于 MySQL 1.0 版的 SSMA 2008 CTP1 提供迁移工作量的评估以及自动化架构和数据迁移。
问题:SQL Azure 是否向后兼容?能否将 SQL Server 2000 或 SQL Server 2005 数据库迁移到 SQL Azure?
SQL Azure 不在向后兼容模式下运行。SQL Azure 基于 SQL Server 2008 代码库构建。因此,所有弃用的 SQL Server 2000 和 SQL Server 2005 功能在 SQL Azure 中都不起作用。可以使用 SQL Server 2008 升级顾问在迁移到 SQL Azure 之前测试数据库兼容性。可以使用 SQL Azure 迁移向导检查 SQL Server 2008 和 SQL Azure 之间的兼容性。此工具还可以分析 SQL 事件探查器跟踪结果,以检查应用程序生成的 T-SQL 语句的兼容性。
问题:关于在 SQL Azure 中存储的数据备份,有什么值得注意的问题?客户如何从损坏或数据丢失情形中恢复?
通常,对于客户来说,最佳做法是创建备份以从逻辑数据丢失或损坏情形(例如,用户应用程序意外删除数据)中恢复。该服务还定期运行备份并运行一致性检查以从硬件故障中恢复,但这仅可在内部用于服务。然而,客户可以使用大容量复制实用工具 (BCP) 或 SQL Server Integration Services (SSIS) 随时将数据复制到内部部署 SQL Server 数据库。
问题:是否有可用于在内部部署 SQL Server 和 SQL Azure 之间移动数据的任何动手实验或演示?
Windows Azure 培训包提供有关 SQL Azure(包括迁移数据库)的示例、演示和演示文稿。
数据库大小
问题:对可以在 SQL Azure 中存储的数据库的数目有何限制?
存在每台服务器 150 个数据库的软限制。通过致电 Azure 技术支持人员并完成信用核查过程,客户可以取消该限制。
问题:是否限制产品中支持的最大数据库大小?
提供了两个版本 – Web Edition 和 Business Edition。Web Edition 和 Business Edition 当前允许的最大数据库大小分别为 5GB 和 150GB。将来,我们将提高这一限值。敬请关注通过 SQL Azure 团队博客发布的更新。
问题:达到数据库大小限额时将出现什么系统行为?
在达到设置的最大版本大小时,将显示错误代码 40544。下面是预期行为:
- 将阻止所有插入/更新/创建/修改添加操作,并且向数据库添加更多数据的任何尝试将导致会话终止。
- 读取将继续正常工作
- 删除/丢弃/截断等将正常工作,因此您可以通过丢弃表和/或索引、删除数据或截断表来减小数据库大小
- 释放空间后、可以插入新数据之前,可能存在最高 15 分钟的延迟。
指导原则和限制中提供了详细信息。
问题:如何知道数据库的实际大小,以便确定有多少剩余空间并作出相应规划?是否可以通过编程方式了解数据��的大小?
数据库大小是通过统计数据库中包含它们的表、索引和对象的页数计算出来的。这类似于在标准 SQL Server 中计算数据库的大小 – 不是实例占用的磁盘空间,而是每个数据库占用的空间。不影响大小的一些内容包括:
- 日志会从大小计算中排除
- Master 数据库会从大小计算中排除
- 所有其他系统数据库和服务器目录会从计算中排除
- 所有客户数据库副本会从计算中排除(我们仅统计客户数据库的三个副本之一)
在当前产品中,不能通过编程方式查找此信息。我们计划在不久的将来添加此功能。SQL Azure 门户将显示实际使用率数字。
还可以使用以下数据管理视图 (DMV) 获取使用的数据库的近似大小:
SELECT SUM(reservered_page_count)*8.0/1024 as ‘SizeInMB’
FROM sys.dm_db_partition_stats
问题:数据库大小是否包括日志?
不包括,数据库的大小仅包括数据、索引和对象。有关详细信息,请参考 SQL Azure 中的帐户和计费。
计费和度量
问题:能否解释一下按比例的计费模型?
SQL Azure 的计费模型非常简单。它基于数据库总数及其版本,以及持续时间的带宽费用。在您创建数据库(任意类型)时,我们将启动计费器。在您删除数据库时,我们将停止计费器。如果数据库在整月中都存在,则对于 Web Edition 数据库,将向您收取 9.99 美元;对于 Enterprise edition 数据库,将向您收取 99.99 美元。如果您的数据库仅存在了几天,我们将按“数据库天数”收费。对于 Web Edition 数据库,大约为 0.30 美元。
可以通过 DMV sys.bandwidth_usage 获得带宽使用详情,通过 DMV sys.database_usage 获得数据库使用详情。可在 SQL Azure 定价中找到有关定价模型的详细信息。
问题:在哪里可以找到有关 SQL Azure 服务的一些度量?
某些度量存储在 master 数据库中。我们添加了显示数据库的数目、类型和大小以及每个数据库的带宽使用量的新视图(如 sys.database_usage 和 sys.bandwidth_usage)。
问题:是否对 master 数据库收费?
否,我们不对 master 数据库收费。
管理订阅
问题:从 Azure 取消订阅时,是否会立即删除 SQL Azure 数据库?SQL Azure 如何处理已标记为删除的数据?
如果您打电话从 Azure 取消订阅,实际上将取消订阅所有 Azure 服务。对于 SQL Azure,具体来说,订阅将从“活动”更改为“已禁用”状态。您的 SQL Azure 数据库不会被立即删除;有 90 天的保留期,在此期间您可以选择在 Azure 上重新启用订阅,或者直接导出 SQL Azure 数据库。90 天的宽限期后,订阅进入“已取消提供”状态,并且将永久删除 SQL Azure 数据库。
问题:取消订阅后,SQL Azure 数据保留和隐私策略是怎样规定的?
SQL Azure 在取消订阅 90 天后会删除 SQL Azure 数据库。
问题:是否可以选择仅取消 SQL Azure 或任何一项 Azure 服务,而不是所有服务?
取消操作将影响所有 3 个可用 Azure 服务:Windows Azure、SQL Azure 和 AppFabric。然而,因为服务采用“随用随计费”模式,所以如果您希望保留订阅但不对 SQL Azure 计费,则可以仅删除数据库和服务器,这样就不会对 SQL Azure 计费。
问题:如何将数据库从一个订阅迁移到另一订阅?
可以使用 CREATE DATABASE ....AS COPY OF ...T-SQL 语句、SQL Server Management Studio (SSMS) 的 SQL Sever 2008R2 版本中的生成脚本向导、SQL Server Integration Services (SSIS) 或大容量复制实用工具 (BCP) 将数据库从一个订阅迁移到另一订阅。因为 SQL Azure 服务器是逻辑服务器,并且服务器名称是自动生成的,所以需要更新客户端连接字符串。如果您的订阅位于同一子区域,则可以与技术支持人员联系以将服务器和数据库从一个订阅移动到另一订阅。SQL Azure 的当前版本仅支持每个订阅一台服务器。
问题:如何可以交换订阅或将订阅移动到另一个 Live ID。
可以使用 SQL Server Management Studio (SSMS) 的 SQL Sever 2008 R2 版本中的生成脚��向导、SQL Server Integration Services (SSIS) 或大容量复制实用工具 (BCP) 将数据库从一个订阅迁移到另一订阅。需要在新服务器上手动配置 SQL Azure 防火墙。因为 SQL Azure 服务器是逻辑服务器,并且服务器名称是自动生成的,所以需要更新客户端连接字符串。我们正在开发一种工具,该工具将在不久的将来推出以帮助将订阅从一个帐户移动到另一帐户。
问题:如何创建多个 SQL Azure 服务器?
SQL Azure 服务器只是数据库的逻辑分组。SQL Azure 针对每个订阅提供一台服务器。然而,可以使用一个共同的 Azure 平台帐户创建很多订阅。这允许您根据需要创建很多服务器。
服务更新
问题:服务更新推出时,是不是每个人都使用最新版本?
是的,推出的服务更新面向所有客户,因此每个人都将获得最新版本。
问题:推出操作系统修补程序和服务更新的过程是怎么样的?
推出的修补程序和服务更新面向 SQL Azure 环境中的所有计算机。我们执行测试和评估,以确保更新向后兼容。
其他
问题:在哪些不同的情况下会阻止我的工作负荷?
通常,阻止情况可以分为以下几类:
- 达到了数据库的大小限额 – 将阻止所有更新/插入/创建/添加活动,直到减小数据库大小。
- 短期瞬时负荷情况 -- 此错误将指明客户端需要重试。
有关如何处理连接断开错误的详细信息,请参阅 TechNet Wiki 中的文章 SQL Azure 中的连接管理。本文列出了连接断开的原因,并且提供了关于如何在 SQL Azure 中管理连接生命周期的指导原则和最佳编码做法。此外,请阅读 MSDN 库中的 SQL Azure 故障排除主题。
问题:SQL Azure 将如何发展以支持更大的数据集?
SQL Azure 为客户提供了横向扩展到无限大小的平台。客户可以在应用程序级别对数据进行分区。将来,我们将增加允许的数据库大小,还将增加对在平台中进行分区的支持。
问题:在哪里可以找到 SQL Azure 案例研究?
可在 Windows Azure 案例研究中获得包含 SQL Azure 的案例研究。
原作者:Abi Iyer,Dinakar Nethi