• [分享交流] 数据库 SQL Server 备份还原功能全面升级
    数据资源迁移核对不方便?华为云数据库 SQL Server 备份还原功能全面升级!支持以数据库为粒度还原到新实例、已有实例、当前实例;支持按新数据库名称进行还原,不再担心数据损坏丢失。了解详情:网页链接 
  • [行业资讯] 上云就能享受的 SQL 超级体验,支持 ECS 自建 SQL Server
    继支持 ECS(云主机)上自建数据库 MySQL 后,华为云数据管理服务 DAS 新支持另一款主流数据库 SQL Server,让用户上云就能免费享受 WEB 页面的 SQL 超级体验,大幅提高工作效率。  本次 DAS 新版本上线,除了支持对 ECS 上自建的 SQL Server 数据库进行管理外,还新增了 MySQL 类型数据管理的新功能点,进一步帮助用户用好数据库。 MySQL 类型数据管理新增功能点:跨实例结构快速对比,解决生产环境和测试环境表结构不一致问题:删除大量数据,表的存储空间没有变少,新增表维护特性,释放表空间: 3、 一键备份数据超快捷,可以按表或者SQL导出 1000 万行数据:4、 不记得SQL命令,随时查看 SQL 模板:5、 SQL 执行等锁超时和死锁失败;一键诊断 InnoDB 锁状态,查出元凶: 华为云数据管理服务(Data Admin Service),简称 DAS,是一款专业的简化数据库管理工具,提供业界领先的可视化操作界面,直接对数据结构进行查询、变更操作,旨在让数据管理变得安全和简单。在云数据时代,互联网上每 1 分钟就产生 100 TB以上的数据,且种类五花八门,企业也因此面临着各种数据管理复杂的难题。华为云 DAS 提供了极速访问表、快捷数据操作和可视化管理;支持一键搜索、SQL智能提示、SQL自动格式化、在线编辑,快捷导出,上传下载、对象层级显示、可视化操作DDL、可视化授权等功能,对数据量大、数据高可用要求高的游戏、金融、视频等行业而言,堪称必选的数据解决方案。此外,对于在线快速部署、数据极速恢复要求高的游戏行业,需要多重安全防御,全面监控审计,敏感字段访问控制的金融行业,以及表结构高度同步,数据快速复制需求大的视频行业而言, DAS 同样是极佳的数据处理神器。DAS 不但让用户拥有数据访问效率提升 N 倍的极致体验,而且化繁为简,将数据处理步骤由 N 降到1,大幅提高工作效率。尤其是在数据意外删除等紧急情况下,能极速定位操作时间点和操作语句、回放删除内容,并生成恢复语句,一键回滚极速恢复数据,让管理人员不再面对误删数据库造成重大损失的风险。当前,DAS 已正式商用,并致力于解决开发者在数据库使用过程中遇到的难题。未来,DAS 将会基于华为云生态全方位升级,集自动化智能化于一体,成为数据库开发者手中的利器.想了解更多精彩内容,请扫码关注【HW云数据库】
  • [热门活动] 华为云SQL Server数据库2017 企业高可用版服务于2019年2月25日00:00(北京时间)转商通知
    尊敬的华为云客户:华为云计划于2019/02/25 00:00(北京时间) 将SQL Server数据库2017 企业高可用版正式转商用。华为云SQL Server 数据库2017企业高可用版,采用微软最新Always On高可用架构,在原有主备模式基础上,支持用户创建5个只读副本,让用户在负载均衡、读写分离、性能库容上拥有质的突破。服务正式商用后,服务将于2019/02/25 00:00(北京时间)正式开始收费,支持按需和包年包月两种计费方式。更多关于华为SQL Server数据库介绍,请您点击了解。如您在使用过程中有宝贵意见,欢迎您拨打华为云服务热线:4000-955-988与我们联系。感谢您对华为云的支持!https://www.huaweicloud.com/notice/2018/20190215104001790.html
  • [技术干货] 云生极致,如何利用华为云SQL SERVER 各版本,高性价比实现关键业务需求
    1. 什么是SQL Server多版本微软的SQL Server作为一款成熟的商业数据库,主要通过对功能的差异化限制上来区分为不同的版本。其中主要分为企业版、商务智能版、标准版、开发版、Web版,还有个免费版Express。华为云SQL SERVER 目前提供的版本有企业版、标准版、Web版。这些不同的版本对应企业不同的业务场景,可以比企业用户本地部署方式,更加灵活,更高性价比的方式实现自身的业务需求,下面将给大家详细介绍不同版本之间的具体区别:Enterprise作为高级版本,SQL Server Enterprise 版提供了微软后端解决方案的所有高端功能,除了性能好,资源不受限制以外,它还能通过更多的手段帮助用户解决关键场景的瓶颈问题,并提供更多安全属性,同时集成了端到端的商业智能 ,可为关键任务工作负荷提供较高级别服务,支持最终用户访问深层数据。StandardSQL Server Standard 版提供了较全面的数据库管理功能和基本的商业智能服务,使部门和小型组织能够顺利运行其应用程序并支持将常用开发工具用于内部部署和云部署,有助于以最少的 IT 资源获得高效的数据库管理。WebWeb版仅提供了基础了数据库管理功能,并没有集成微软的商业智能服务,但是对于从小规模扩展到大规模的资产伸缩,性价比和管理能力上来说,SQL Server Web 版本是一项低成本的选择。Developer该版本主要用户企业开发环境基于 SQL Server 构建任意类型的应用程序。它包括 Enterprise 版的所有功能,但有许可限制,只能用作开发和测试系统,而不能用作生产服务器。SQL Server Developer 是开发和测试人员的理想之选。Express 是入门级的免费数据库,主要为学习用途和构建小,微数据驱动应用程序。 它是独立软件供应商、开发人员和热衷于构建客户端应用程序的人员的最佳选择。 以上可以看到,作用于用户正式生产环境的只能是企业版、标准版和Web版本,而不同版本之间的成本差异十分巨大。但在之前用户本地部署的情况下,我们很少去关注各版本的差异和成本的开销,这将是是我们做云上架构设计或数据库选型需要考虑的主要问题。2. SQL Server各版本引擎功能的差异与比较SQL Server产品家族是非常丰富的,以下将以各引擎版本在华为云上的限制为视角,给用户展示最关注的功能和性能的差异点。资源限制: 企业版目前在华为云上最大可选规格为60U512G,但实际上他能无限支持,后续我们将会基于企业版提供更高规格的实例,用户也可以直接给我们提出诉求。标准版目前在华为云上最大可选规格为16U128G,但是在2016,2017版本上他能支持到24U128G,后续我们会将会开放该规格。Web版目前华为云商最大可选规格为16U64G,同时这也是它能支持的最大规格。从内存来看实例上最大内存的配置为该规格的85%,这点我们已经在每个发放的实例上面进行默认配置,同时如果该实例最大内存应用到了90%以上,请不要奇怪,同时也不会影响实例运行的性能。从数据库大小来看,虽然官方给出的本地大小能达到524PB,但是作为关系型数据库,基本1-2TB的级别是最佳选择,超过这个量级后,不论是性能还是运维方面来考虑,都需要进行有效拆解。高用性: 从高可用性上来说,华为云SQL SERVER 2008R2,2012,2014,2016 采用的都是故障转移集群+镜像的混合方案,只能支持1主1备,不支持只读。而华为云SQL SERVER 2017采用微软最新的Always On高可用架构,支持1主1备5只读副本,同时也具有更高的扩展性,后续我们将基于该版本实现1主多备,跨Region容灾等行业更高等级的容灾方案。Web版虽然不支持高可用模式,但是华为云在后台采用单机故障转移技术,能够保障用户的单机实例在完全不可用的情况下,快速重新拉起应用,该流程不依赖用户本地实例大小,拉起时间固定而高效,有效保障用户生产应用在极端情况的可用性。在备份上,华为云采用阶段是备份,不依赖于数据库的压缩备份能力,所以Web版的数据全量备份并不会对性能造成较大影响,同时为了避免备份过程影响业务,请选择一个低锋的时间窗。数据库版本:华为云目前提供微软SQL SERVER各个版本的型号共用户选择,用户可以根据自身业务条件选择性价比高的方案,有效降低数据库使用成本。用户本地如果是SQL SERVER 2000,2005,2008的老版本,可以通过DRS迁移服务备份还原到2008R2,2008R2是目前对2000及2005兼容性较好的版本。 用户本地如果是2008R2及以上版本,推荐直接选用华为云上对应同版本进行迁移,也可以选用较高的版本微软的SQL SERVER数据库是能够完全向下兼容的。但是如果想从高级别的版本向低级别的的版迁移,比如从企业版向标准版迁移,从2014向2012迁移,则需要通过微软的官方迁移助手(DMA)来进行辅助评估。详见官网地址:https://docs.microsoft.com/zh-cn/sql/dma/dma-overview?view=sql-server-2017引擎高级功能:华为云SQL SERVR为了满足用户在云上数据库的自动化运维诉求,帮助用户完成数据库的线上托管,在引擎功能上针对部分功能进行了禁用,具体如下: SQL SERVER的高级功能有很多,如R预言,内存数据库,文本索引,CLR等,这些功能大部分对版本和权限有较高要求,且对自动化运维存在一定的风险,同时该类特性主要针对特殊场景进行优化和使用,所以目前没有进行全网开放。但是如果用户需要在华为云 SQL SERVER服务上用到,可以通过工单的形式进行针对性有限开放使用。3. 华为云 SQL Server多版本产品与选择终于说到关键点了,为何我们要在华为云上支持SQL Server多版本?在这之前,友商在SQL Server数据库的支撑上通常只有几个简单的版本,例如:2008R2,2012。并且仅支持企业双机版:1.这导致了用户的选择有限,且费用高昂。用户只能选择昂贵的企业版数据库,其实是一种巨大的损耗。2.同时因为版本的不同,从线下迁移到线上会产生较大的改造成本,且两边版本不同对于线上线下的交互页存在阻塞。3.并且SQL Server新版本总能开放更多功能,并针对标准版和Web版开放更多特性。比如2017的标准版最高规格就能达到24U128G了,同时开放了Always On的简单可用性组能力。所以恰当的选择商用数据库的版本对于企业应用上云是最重要的关键事项。用户如何有效的选择华为云 SQL Server版本?通过多年来帮助企业上云沉淀经验,我们可以大致的通过以下场景进行选择。如何选择版本如果本地是2000或2005,2008的SQL Server数据库目前兼容性最好的线上版本是2008R2如果本地是2012,2014,2016或者2017的版本可以选择线上的相应版本,这样上线的备份文件可以直接下载到本地使用,方便线上线下交互使用,同时也最大的降低了应用改造的成本跟风险但是如果线下是企业版,要迁移到线上的同版本的标准版或者Web版,可以通过微软官方的迁移助手(DMA)进行评估,如有需要也可以联系华为云技服人员提工单进行帮助。如何选择高可用华为云SQL Server从2008R2到2016全部采用镜像的优化方案来进行实现,可以保证1主1备跨AZ部署,并且主备之间采用强一致同步方式,保证事务的一致性华为云SQL Server 2017企业高可用版本采用微软最新Always On高可用价格,支持1主1备跨AZ部署,并支持创建5个只读副本,只读副本采用异步同步方式,保证主备节点性能不受影响,同时该架构提供更加灵活的部署方式,能够支持1主多备,跨Region创建只读节点,线上使用线下容灾等多种场景的打通华为云单机版本,包括Web版采用华为云提供的单机故障转移容灾能力,能够保证用户的服务器在极端情况下快速进行恢复拉起,保证应用在固定时间内恢复可用性。如何选择商用版本SQL Server不同商用版本之间的成本差距高达10倍,所以选择合适的版本能够极大的节省使用成本。企业版:如果你的服务是企业核心对外服务,使用量较大且存在不固定性,并且对于性能的基线诉求已经超过了16U128G,则需要考虑使用企业版,保证资源扩容上限,同时保证应用的在线容灾SLA,也能够最大化的使用微软提供的各种新特性解决关键性能问题。标准版:如果你的服务是对内服务,且对应用有较高的在线SLA要求,同时对应使用的人数和性能瓶颈能够限制在16U128G以下,则推荐使用标准版。Web版:其实在做云服务之前,企业内部从来都是选择企业版和标准版,从来没考虑过Web版,但是通过粗略的估算,企业版是标准版的2倍,而标准版是Web版的5倍,也就是说从纯成本考虑Web版是企业版的十分之一,跟开源数据库**相当!我们可以看到Web版能够支撑的资源上限是16U64G,并不比标准版差,那它为什么能这么便宜呢?原因有两点,1.Web版的高可用能力受到限制,基本上只能提供单机能力,但是在公有云上,我们可以通过单机故障转移和备份策略,最大限度的保证用户的业务和数据损失最低;2.Web版仅提供数据库引擎服务,微软BI体系里面的SSIS,SSRS,SSAS服务都是不提供的,这也是Web版成本如此低廉的原因所在,而SQL Server服务目前在所有云数据库服务体系中都是默认不提供以上三大服务的。综上所诉,Web版真正是用户上云的性价比之王。4. 华为云 SQL Server如何如何实现轻松上云华为云SQL Server在设计之初的最关键的一个理念都是希望做到,用户线上线**验的一致性,它包括了1.用户线下的业务应用能够不做任何改动直接迁移上云;2.用户的开发和运维人员不需要做任何二次学习和适应,能够在开发和运维上完全套用本地脚本;3.我们最大限度的开放商用数据库的功能和权限,让用户能够把SQL Server的商用价值体现到极致。秉承这一个理念我们对比友商拥有更多不同功能设计和更好的线上体验宽松的权限环境,并支持快速开启越权执行方案:我们唯一不能做的就是讲sysadmin权限授予客户,因为这会导致用户在无意间破坏我们的自动化运维能力;同时我们回收了备份,还原,HA的相关操作权限,因为这三项功能主要有华为云来进行接管。剩下的所有功能用户只需要通过工单提出需求,我们总能给出好的解决方案,让用户最低代价的获得适配通过,同时我们会将一些用户提到的或者常用的功能总结成为华为云独特的存储过程,授权让用户直接执行,从而快速的帮助客户解决关键场景,目前已经提供并对外开放的公共存储过程如下:msdb.dbo.rds_rename_database:帮助用户给数据库改名master.dbo.rds_read_errorlog:快速查阅数据库日志记录,比管控页上的好用msdb.dbo.rds_dbcc_trace:帮助客户开启部分dbcc trace flag,没有的可以跟我们提哟msdb.dbo.rds_cdc_db:帮助客户开启数据库变更捕获功能,开启后使用方式跟本地一致 rdsadmin.dbo.rds_remove_database_from_ag:把客户的数据库从Always On的可用性组中移除,目前只有2017版本可以用到,移除后才能删除和改名字哦 msdb.dbo.rds_copy_database:帮助客户快速的把数据库A复制出一个新的B出来 rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin:修改数据库的拥有者,修改完成后还有彩蛋哦 具体描述详见官方帮助文档:https://support.huaweicloud.com/usermanual-rds/rds_09_0007.html 以上我们可以感受到,华为云SQL Server能够通过这种方式灵活的帮助大家实现各种系统权限才有的能力,甚至帮助大家快速实现一些通用的功能函数。方便灵活的迁移功能,帮助大家快速的迁移上云:华为云提供完全免费的数据库迁移功能DRS,详见:https://support.huaweicloud.com/qs-drs/drs_online_migration.html 通过使用该数据库服务,用户能够通过SQL Server的数据库备份文件快速的在RDS实例上进行还原,该方案也是目前最迅捷,省事的迁移方式,同时华为云支持以日志文件为基础的增量还原能力,并同时支持一次上传多个备份文件同时进行还原,方便快捷又安全。高度兼容微软生态系统,支持用户AD域控服务:华为云SQL Server在国内率先支持用户在数据库实例上添加AD域控服务,能够100%跟本地域控服务进行集成,并且相互独立,基于该能力,我们能够高度兼容SharePoint,PowerBI,DynamicCRM等微软生态体系下的软件服务,让你能够安全放心的将服务100%托管于华为公有云上,享受云时代的高度灵活和便捷。高度兼容各类三方软件集成上云:华为云SQL Server能够100%兼容用户本地架构,100%兼容用户本地开发的应用,高度兼容市面上流行的三方工具,我们能够成功的让你本地很老的用友,金蝶,管家婆等国内流行软件,无缝的迁移到云上进行托管,极大的节省了你的本地运维成本。高度自动化的托管能力:数据库上云后,华为云SQL Server完全接管了你的备份,还原,高可用,监控四大能力,这些本地华需要大量时间和精力来实现,并持续运维的动作得到有效的释放后,能够让用户更多的聚焦业务和数据价值,在数据化时代放开手脚赢得先机。更全面的性能优化:华为云SQL Server符合欧洲安全标准,同时满足微软在OS和数据库上提出的所有最佳实践,我们在Windows做出了200多项基于安全,性能方便的设置;在SQL Server上有40多项最佳实践;同时基于用户购买的不同规格,对实例参数做出了最佳配比;更为关键的是华为云SQL Server选用的数据库硬件参数,最大化的为数据库场景服务,使得我们的实例在同规格情况下性能得到了越级强化。预知详情,请点击:https://support.huaweicloud.com/pwp-rds/rds_02_0003.html
  • [行业资讯] 数据库上云新方案来了!价格再低一半
    日前,华为云 SQL Server 数据库推出 2U 系列新规格,标准版新增 2U4G、2U8G、2U16G;企业版新增 2U8G、2U16G。该系列适配各种企业办公产品,价格比同类型实例再低一半,为企业提供最佳性价比上云方案。  在 B2B、C2B 等互联网+背景下,企业前端的销售线上化和社交化、后端的供应链与物流平台化和数据化,使得企业需要不断提升办公产品的管理信息化水平,才能保证业务顺利开展。 但是,效率和成本是企业永恒的难题。传统企业办公产品不但复杂,而且成本高昂,正常运行所需的各种软硬件数量惊人,种类繁杂。中小型企业资源有限,因此企业主们不得不精打细算,心力交瘁。 云服务的兴起为二者平衡带来新机遇。它为中小型企业提供了一整套系统化服务,并通过快速迭代为公司提供丰富的个性化服务,满足公司日益膨胀的管理需求。 得益于云架构产品天然有利于链接外部“互联网+”平台的属性,企业办公产品的云化,大大提升了企业实现低成本信息化转型的步伐。 数据库作为承载企业上云的重心,也随之成为企业的重点关注对象。其中 SQL Server 以其高性价比获得广泛关注。相对其他商用数据库,SQL Server 以更优惠的价格,提供与其余商业数据库同一水平的功能和事务支持。相较开源数据库,它则以相当的价格,提供更优异的体验和更完善的生态。 此番华为云 SQL Server 2U 系列新规格的推出,完美兼容金蝶、用友、管家婆等各种企业办公产品,对企业的数字化转型而言,可谓是福音。 当前,华为云 SQL Server 支持规格多达 19 种, 支持单机版、高可用版(双机版)的高可用类型选择,还提供了普通IO、高IO、超高IO等不同存储空间的实例供选型。 多版本、多规格、多维度实例选择,使得用户可以根据不同需求选用最合适的数据库后,节省成本将高达 90% 以上。 华为云 SQL Server 近期新动向 新版本华为云 SQL Server 2008、2014、2016 WEB 版全线上新,低至 0.7 元 / 小时;开源的价格,商用的体验!华为云 SQL Server 支持范围 华为云 SQL Server 2017 企业版首发,采用微软 Always On 高可用架构支持读写分离,负载均衡,最大支持 5 只读副本。 新规格华为云 SQL Server 2014、2016 标准版实例规格上新,价格低至同类1/3新硬件华为云 SQL Server 全系列软硬件升级,基于华为云最高性能硬件 V5 系列,性能全面提升! 可见,华为云 SQL Server 频频推出适用于不同场景、不同业务规模的各种版本和规格,不但提供了业内最全版本的 SQL Server 云服务,使得用户可以按需选型,为众多青睐商业数据库的用户大开方便之门,更是将 SQL Server 高性价比提升到极致。 了解华为云SQL Server 更多信息https://www.huaweicloud.com/product/mssql.html  最新活动:华为云数据复制服务 DRS + MySQL + SQL Server + PostgreSQL,豪华套餐免费体验;迁移有礼来就送,迁移完成再送 1500 元代金券! 想了解更多精彩内容,请扫码关注【HW云数据库】 
  • [行业资讯] 华为云 SQL Server 规格上新,价格低至同类1/3
    日前,华为云数据库 SQL Server 推出新规格实例,包括 2014 标准版、2016 标准版均新支持 4U8G、8U16G、16U32G 规格,且价格较同类规格降低了1/3,具有相当高的性价比。SQL Server作为一款非常受欢迎的关系型数据库,本身就以高性价比见长。相对其他商用数据库,SQL Server可以以更优惠的价格,提供与其余商业数据库同一水平的功能集合事务支持。相较开源数据库,它则以相当的价格,提供更优异的体验和更完善的生态。 华为云数据库 SQL Server 为微软正版授权,支持基于 Windows 架构下的应用程序,同时它拥有即开即用、弹性伸缩、轻松管理等特点,提供了业内最全版本的云服务,使得用户可以根据不同应用场景、不同业务规模选择不同的实例,将高性价比提升到极致。 当前, 华为云 SQL Server 支持范围覆盖 2008、2014、2016 全系列标准版、企业版、Web版、2017 企业版,并将上线 2012 版本。 其中,标准版提供基本数据管理和商业智能功能,使企业能够顺利运行其应用程序并支持常用开发工具。 企业版则提供全面的高端数据中心功能,性能优异且具有端到端的商业智能,支持最终用户访问深层数据。刚推出的 2017 企业版,采用微软 Always On 高可用架构,支持读写分离,负载均衡,最高支持 5 只读副本,而且搭载华为云智能生态服务,能帮助用户轻松应对海量数据处理,让运维无忧! Web 版对于小规模企业级用户而言,可伸缩、经济可靠、易管理等特性这是超高性价比的最优选择。以不久前推出的SQL Server Web 版为例,包括 2008、2014、2016 全系列基于华为云最高性能硬件 V5 系列,性能强悍;且价格低至 0.7元每小时,是同规格 SQL Server 标准版的五分之一,企业版的十分之一;等同于同规格 MySQL 的价格。 除企业版、标准版、Web三大版本的支持外,华为云 SQL Server 还提供了供单机版、高可用版(双机版)的高可用类型选择,以及普通IO、高IO、超高IO等不同存储空间的实例供选型。 目前,华为云 SQL Server 支持规格多达14种,除本次新支持的 4U8G、8U16G、16U32G 外,还提供了包括2U4G、4U16G、4U32G、8U32G、8U64G、16U64G、16U128G、32U128G、32U258G、60U256G、60U512G 在内的各种规格。 多版本、多规格、多维度的实例选择、使得华为云 SQL Server 将其高性价比的特性发挥到极致。用户根据不同需求选用最合适的数据库后,节省成本将高达 90% 以上。 了解华为云SQL Server 更多信息,请访问官网:https://www.huaweicloud.com/product/mssql.html 福利时间:华为云数据库畅销引擎新用户免费试用,支持企业和个人套餐!新用户点击下方链接登录/注册华为云账号实名认证(企业/个人)选择引擎立即领取免费试用地址:https://activity.huaweicloud.com/free_test/index.html想了解更多精彩内容,请扫码关注【HW云数据库】公众号
  • [行业资讯] 华为云 SQL Server 亮相西安,关键性能指标破百万
    12月1日,ACMUG & CRUG技术沙龙迎来全国巡演第十站 -- 西安站。华为云数据库技术专家带来的主题演讲:《华为云 Microsoft SQL Server 助力企业数字化转型无忧》也随之亮相,将活动推向新高潮。西安作为中华文明和中华民族的重要发祥地,自古就有**都之称。这是 ACMUG & CRUG第一次到西安举办技术沙龙活动,也是西安技术者们期待已久的盛宴。华为云的到来,为本次技术普及添上浓厚一笔。 随着近年来企业上云,数字化转型逐渐成为大家认同的趋势。如何选择云上数据库,如何帮助企业快速上云,如何让企业在云平台上用的更好,更省,更放心,是广大企业管理者和数据库开发维护人员都关注的主题。 华为云数据库技术专家的本次分享,也正是从以上问题切入,全方位介绍了企业应该如何多快好省的实现数字化转型。 传统企业 SQL Server 上云四大痛 1.数据库账号权限限制大,开发习惯受影响 SQL Server 作为一款商用数据库,上云过程中会面临账号权限受限、影响开发习惯,导致效率降低的问题。 常见的受限权限,包括:不能创建数据库、没有常用系统视图的查询权限、不能创建子账号并授权、一些数据库高级功能无法使用、不能直接 Kill 进程。 2.商用数据库功能特性阉割多,商用价值打折扣 众所周知,SQL Server 最受欢迎的特点,莫过于功能特性齐全、使用方便。但是在上云过程中,受技术、兼容性等因素的影响,功能特性遭遇阉割,导致商用价值大打折扣。 常见被阉割的功能,包括:链接服务、优化顾问、SQL Profiler、变更数据捕获、数据库审计功能等等。 3.三方应用兼容能力差,上云通道受阻塞 云服务最大的价值点,在于资源调用的便利性和生态的完整性。但在商用服务上云的过程中,往往面临第三方应用兼容能力差,上云通道受阻塞的问题。这就导致用户不得不面对以下挑战:本地使用的三方软件无法直接迁移到云上无法支持传统软件供应商提供云上服务云上云下数据文件交互困难用户基于数据库管理迁移不灵活 4.版本覆盖不全,使用选择不灵活 SQL Server 版本众多,目前云数据库市场上的商用版本不能完整覆盖。一些服务商仅提供企业版、或仅提供 2008 和少数几个大版本、再或者仅提供双机高可用版本,导致用户在上云过程中选择受限。 重拳出击:华为云 SQL Server 对症下药四方案 针对传统企业 SQL Server 上云的四大痛点,华为云给出了一套对症下药的解决方案组合拳。 1.精准权限隔离,线上线**验一致 华为云 SQL Server 对用户权限和系统运**限进行有效隔离,将 SQL Server 的所有引擎特性开放给用户使用(链接服务、优化顾问、SQL Profiler、变更数据捕获、数据库审计功能等等),并保证 DBA 运维人员和数据库开发人员,线上线**验的一致性,同时将权限管理不当对数据库可能造成的危害降到最低。 2.六大特性,打通线上线下数据文件交互为了保证用户灵活对线上线下数据库的迁移和管理,华为云开发了6大特性,打通线上线下数据文件交互渠道,并将整个过程做到了以数据库粒度进行交互,而不是传统的以实例为单位进行处理。 备份文件下载:支持用户按数据库下载实例上的备份文件,加速用户快速获取线上数据备份文件上传还原:通过 DRS 离线迁移任务,用户可以把本地实例上多个数据库文件备份到一个 或多个bak 备份文件中,一次性上传还原到目标实例。手动数据库快照:支持用户创建手动快照时,可选择该实例上对应数据库。增量备份上传还原:通过 DRS 离线迁移任务,用户可以把本地实例数据库的全备 & 日备文件增量上传还原到目标实例。备份还原 & PITR 还原:当用户对当前实例进行还原操作时,支持用户选择部分数据库进行还原操作。数据库快速迁移:通过 DRS 离线迁移任务,用户可以通过实例上的手动快照和自动快照,快速将其中一个数据库迁移到同 Region 的实例上。 3.提供超全版本保证客户 SQL SERVER 上线兼容能力 当前,华为云 SQL Server 提供业内最全版本的云服务,支持范围覆盖 2008、2014、2016 全系列标准版、企业版、Web版、2017 企业版,并将上线 2012 版本,多种规格让用户可以根据不同场景选用最合适实例,节省成本 90% 以上。 超高性能、超高可靠企业版企业版:最高规格 60U512G;现已提供 2008 | 2014 | 2016 三个版本,支持跨AZ高可用完全同步模式,保障事务强一致性,是用户核心业务的不二选择。 价格实惠、功能齐全标准版标准版:最高规格支持16U128G;现已提供2014,2016两个版本,支持跨AZ高可用完全同步模式。 超高性价比 Web版:最高规格支持16U64G;现已提供2008,2014,2016三个版本,支持单机模式,商用的服务,开源的价格。 4.软硬件结合,绝佳云上数据库体验华为云SQL SERVER 采用最新硬件配置,全面遵循微软最佳实践,给用户提供最佳的云上数据库服务。所有实例规格均采用华为V5系列最新硬件配置。完成 200 多项 Windows 实例设置。完成 40 多项 SQL SERVER 服务器配置。完成 SQL SERVER 九个版本 74 个实例参数值最佳配比。 值得一提的是,在最新的 TPCC 性能压测中,华为云 SQL SERVER 无论单实例还是高可用实例下,TPM、IOPS 等各项性能指标均远远高于市场上的其它云服务,TPM 更是突破百万以上!不久前,华为云数据库 SQL Server 2017 企业版首发,采用微软 Always On 高可用架构,支持读写分离,负载均衡。该版本最高支持 5 只读副本,搭载华为云智能生态服务,助力用户轻松应对海量数据处理,让运维无忧!了解华为云SQL Server 更多信息,请访问官网:https://www.huaweicloud.com/product/mssql.html新用户点击下方链接登录/注册华为云账号实名认证(企业/个人)选择引擎立即领取免费试用地址:https://activity.huaweicloud.com/free_test/index.html#sql
  • [技术干货] 重构RDS规格设计的总结
    什么是云服务产品的规格?如果把rds数据库可以比成一件漂亮的衬衫,rds数据库的规格,就是这件衬衫的尺寸表,这对于商品的销售当然是至关重要的。从用户需求场景看,要求规格必须灵活以快速适应不同的用户群,要求必须快速直观展示达到最直接的用户体验提升。 然而我司RDS第二代架构上线之后, 规格的设计其实还是1.0的衣钵, 本质上没有做太大变化. 可能是由于工期和当时人力布局,主要矛盾并没有集中在api, 这一块并没有得到重视. 上线一年之后, 原有的设计弊端逐渐恶化到页面请求直接超时,更别说新增需求代码网上堆,不得不停下手头的工作,来一次从设计到代码的完全重构.  先说下当前规格的几个问题:完全没有按照当前console界面的结构建模,响应体结构混乱,信息字段大量冗余定义。查询慢,单次调用返回所有引擎所有规格,每次串行查询七八个表。虽着引擎内部四位版本支持需求落地,规格数据爆发性增长,这些查询也变得越来越慢。单次调用数据量大上千条数据,但是不是每次都用得上,造成大量的无效数据传输挤占带宽不够灵活,扩展性差。后端代码混乱,新增需求开发起来效率很差。前后端同时做了大量的开关控制,页面处理速度慢。  优化思路当然是对症下药,当时我自己定一个原则就是,新的api一定要简明易用。所以设计的时候就没停止过和前端的同事沟通,最终也是义无反顾决定下层他的所有前端的控制逻辑。让他前端只负责渲染和数据联动展示,没有其他的业务逻辑。1.重新定义了新api的数据结构,将原有的接口一分为二。先展示引擎相关信息,待用户选择完引擎信息,再查询这个引擎相关的规格信息,这样虽然看上去一次查询变成两次,但是实际两次查询总代价,远小于1次大而全的, 最主要是接口也变得简洁纯粹,便于后续的新需求的迭代。 2.将原有的七八个表的串行查询通过java的多线程技术并行处理。为了提高线程的利用率以及防止大量规格查询浪涌过来导致OOM,这还设计了专用线程池以及线程池满的策略来应对,查询的速度提升三到四倍。 3.利用数据库自身的索引。新接口每次都是条件查询具体某一个引擎,而非全表扫描所有的规格数据。 4.设计了Cache支持,显著提升后续连续查询。因为规格本身的特殊性,一旦上线,一般线上数据很少变动,所以缓存命中率极高,特别适合cache的场景。实际测试效果,也是有显著提升将查询缩短到 20~200ms左右。 5.查询规格的需求,还需要连带展示Iaas关联规格的状态,如是否售罄、下架等。新接优化RPC调用的地方,如果Iaas请求超时不会影响RDS自身规格的展示。另外还设计 缓存保护,避免频繁请求下游接口而被列入黑名单。 6.另外还作了其他的改进,如隐藏了很多前端无需感知的细节,如ECS计算池的虚拟化类型,让上游的代码也变得更简洁。为后续集成ops做准备,预埋了多维度的 开关控制。 目前DBS2.0新UI上线,使用了后端经过优化的规格查询v2.1接口。 除了速度大幅提升,规格细粒度控制也更加灵活,大家可以在现网直接体验和对比新旧UI的查询效果。 当前正在规划设计规格定制和规格运维这两个功能,准备下个月集成到ops上,来支撑规格数据的各种场景的诉求。 在这两个特性未上线前,一线运维人员通过运行如下几个简单的SQL,也能实现灵活控制规格的展示和屏蔽。  当前使用简单SQL控制的场景                    场景1)新UI创建实例页面屏蔽某个规格在某一个AZ不可见的方法运维人员在升级完某一个Region后,需要根据当前Region规格的特殊情况屏蔽某些AZ不显示某些规格,请按如下步骤操作,数据库更新后,页面查询需要5分钟cache过期后自动生效。步骤1 查询需要屏蔽规格的AZ的code,在core数据库执行SQL:select code,status,az_description from DBS_AVAILABILITY_ZONE;比如显示az1.dc1 ENABLED 可用区1az2.dc1 ENABLED 可用区2az3.dc1 ENABLED 可用区3步骤2 在core数据库执行SQL屏蔽某一些AZ,以屏蔽I3规格不在可用区2显示为例,在更新规格关系表只指定可用区1和可用区2(注意逗号分隔):update DBS_ENGINE_SPECIFICATION set az='az1xahz,az3xahz' where SPECIFICATION_IDin (select id from core.DBS_RESOURCE_SPECIFICATIONwhere CODE like 'rds.%.i3.%xlarge.%');如果后续所有AZ都支持i3,只需要把az设置为*,创建页面就可以再所有az看到i3的规格update DBS_ENGINE_SPECIFICATION set az='*' where SPECIFICATION_IDin (select id from core.DBS_RESOURCE_SPECIFICATIONwhere CODE like 'rds.%.i3.%xlarge.%');场景2)新UI创建实例页面屏蔽某个规格在所有AZ不可见的方法运维人员在升级完某一个Region后,需要根据当前Region规格的特殊情况屏蔽某些AZ不显示某些规格,请按如下步骤操作,数据库更新后,页面查询需要5分钟cache过期后自动生效。步骤1 在core数据库执行SQL屏蔽某一些AZ,以屏蔽rds.mysql.s1.medium.ha规格为例,在更新规格关系表:update DBS_ENGINE_SPECIFICATION set status = 'DISABLED'where SPECIFICATION_ID in(select id from DBS_RESOURCE_SPECIFICATION where code = 'rds.mysql.s1.medium.ha');如果需要恢复显示,重新设置为ENABLEDupdate DBS_ENGINE_SPECIFICATION set status = 'ENABLED'where SPECIFICATION_ID in(select id from DBS_RESOURCE_SPECIFICATION where code = 'rds.mysql.s1.medium.ha'); 场景3)新UI创建实例页面屏蔽某一个卷类型不可见的方法运维人员在升级完某一个Region后,需要根据当前Region规格的特殊情况屏蔽某些AZ不显示某些规格,请按如下步骤操作,数据库更新后,页面查询需要5分钟cache过期后自动生效。步骤1 在core数据库执行SQL屏蔽某种卷类型,以屏蔽SSD卷类型规格为例:update DBS_RESOURCE_SPECIFICATION set status = 'DISABLED' where code like 'rds.%volume.ultrahigh%';如果需要恢复显示,重新设置为ENABLEDupdate DBS_RESOURCE_SPECIFICATION set status = 'ENABLED' where code like 'rds.%volume.ultrahigh%';如果是屏蔽SAS,SQL如下:update DBS_RESOURCE_SPECIFICATION set status = 'DISABLED' where code like 'rds.%volume.high%';如果是屏蔽SATA,SQL如下:update DBS_RESOURCE_SPECIFICATION set status = 'DISABLED' where code like 'rds.%volume.common%';  场景4)新UI创建实例页面屏蔽某个引擎版本的单机或HA规格不可见的方法因为新UI上线后,规格的细粒度控制下沉到后端,运维人员在升级完某一个Region后,需要根据当前Region规格的特殊情况屏蔽某些引擎版本的单机或HA不显示,请按如下步骤操作,数据库更新后,页面查询需要5分钟cache过期后自动生效。步骤1 查询需要屏蔽规格的对应引擎版本的ID,在core数据库执行SQL:select id,name,software_version from dbs_engine where favored=true and status='ENABLED' order by name;比如显示a6cc3deb-c8dd-4c67-817f-54dd553284a4 mysql 5.6.4118024ef4-aa2e-43dd-8423-2154cf8dc6e8 mysql 5.7.23步骤2 在core数据库执行SQL屏蔽某个引擎的所有单机规格,以屏蔽mysql 5.7.23的单机规格为例:update DBS_ENGINE_SPECIFICATION set status='DISABLED' where engine_id = '18024ef4-aa2e-43dd-8423-2154cf8dc6e8' and instance_mode = 'single';如果需要恢复显示,重新设置为ENABLEDupdate DBS_ENGINE_SPECIFICATION set status='ENABLED' where engine_id = '18024ef4-aa2e-43dd-8423-2154cf8dc6e8' and instance_mode = 'single';如果是屏蔽HA,sql如下update DBS_ENGINE_SPECIFICATION set status='DISABLED' where engine_id = '18024ef4-aa2e-43dd-8423-2154cf8dc6e8' and instance_mode = 'ha';如果是屏蔽金融版,sql如下update DBS_ENGINE_SPECIFICATION set status='DISABLED' where engine_id = '18024ef4-aa2e-43dd-8423-2154cf8dc6e8' and instance_mode = 'gr'; 
  • [技术干货] 在MySQL中如何使用explain查询SQL的执行计划
                      1、什么是MySQL执行计划要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。·         应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。·         逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。        首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。·         物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。   通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为作为性能分析的依据。2、如何分析执行计划MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。explain显示了MySQL如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。下面我们使用 explain 做一个查询,如下:1.    mysql> explain select * from payment;  2.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  3.    | id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra |  4.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  5.    |  1 | SIMPLE      | payment | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 16086 |   100.00 | NULL  |  6.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  7.    1 row in set, 1 warning (0.01 sec) 查询结构中有12列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。列名说明idSELECT识别符,这是SELECT的查询序列号。select_typeSELECT类型,可以为以下任何一种:·               SIMPLE:简单SELECT(不使用UNION或子查询)·               PRIMARY:最外面的SELECT·               UNION:UNION中的第二个或后面的SELECT语句·               DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询·               UNION RESULT:UNION 的结果·               SUBQUERY:子查询中的第一个SELECT·               DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询·               DERIVED:导出表的SELECT(FROM子句的子查询)table输出的行所引用的表partitions如果查询是基于分区表的话,显示查询将访问的分区。type联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:·               system:表仅有一行(=系统表)。这是const联接类型的一个特例。·               const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!·               eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。·               ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。·               ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。·               index_merge:该联接类型表示使用了索引合并优化方法。·               unique_subquery:该类型替换了下面形式的IN子查询的ref:      value IN (SELECT primary_key FROM single_table WHERE some_expr)      unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。·               index_subquery:该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引:       value IN (SELECT key_column FROM single_table WHERE some_expr)·               range:只检索给定范围的行,使用一个索引来选择行。·               index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。·               ALL:对于每个来自于先前的表的行组合,进行完整的表扫描,说明查询就需要优化了。一般来说,得保证查询至少达到range级别,最好能达到ref。possible_keys指出MySQL能使用哪个索引在该表中找到行key显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。key_len显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。在不损失精确性的情况下,长度越短越好ref显示使用哪个列或常数与key一起从表中选择行。rows显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。filtered显示了通过条件过滤出的行数的百分比估计值。Extra该列包含MySQL解决查询的详细信息·               Distinct:MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。·               Select tables optimized away MySQL根本没有遍历表或索引就返回数据了,表示已经优化到不能再优化了·               Not exists:MySQL能够对查询进行LEFT JOIN优化,发现1个匹配LEFT      JOIN标准的行后,不再为前面的的行组合在该表内检查更多的行。·               range checked for each record (index map: #):MySQL没有发现好的可以使用的索引,但发现如果来自前面的表的列值已知,可能部分索引可以使用。·               Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行,说明查询就需要优化了。·               Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。·               Using temporary:为了解决查询,MySQL需要创建一个临时表来容纳结果,说明查询就需要优化了。·               Using where:WHERE 子句用于限制哪一个行匹配下一个表或发送到客户。·               Using sort_union(...), Using union(...), Using intersect(...):这些函数说明如何为index_merge联接类型合并索引扫描。·               Using index for group-by:类似于访问表的Using      index方式,Using index for group-by表示MySQL发现了一个索引,可以用来查 询GROUP BY或DISTINCT查询的所有列,而不要额外搜索硬盘访问实际的表。根据上述表格,可以在执行计划分析上提供很好的帮助。 【此文为转载文章】
  • [技术干货] BACKUP LOCK解决备份时FTWRL引入的SQL阻塞问题
    1 问题描述我们在做全量备份时,用的是Percona Xtrabackup工具(关于Xtrabackup工作原理:https://www.cnblogs.com/olinux/p/5207887.html ) ,这个备份工具在2.2版本之前备份都需要执行FTWRL(flush tables with read lock)语句。这个语句会关闭所有表,所以如果没有结束的SELECT语句,会等待FTWRL语句结束,这时其它SQL都会被阻塞。一线曾出现过用户的长查询语句的情况(几个小时都没有结束),触发这个问题导致整个数据库用户业务SQL都无法执行。2 解决方案我们引入了backup lock锁,以及LOCK TABLES FOR BACKUP,LOCK BINLOG FOR BACKUP,UNLOCK BINLOG三条语句,以作为用于物理和逻辑备份的FLUSH TABLES WITH READ LOCK的轻量级替代。这个backup lock锁不会阻塞Innodb表的DML语句和SELECT语句。2.1 backup lock锁特性新增三条语句1. LOCK TABLES FOR BACKUP语句:用来阻塞对于非事物表(MyISAM,CSV,MEMORY和ARCHIVE表等)的update和所有的DDL语句,针对所有表的SELECT查询和针对Innodb/Blackhole/Federated表的INSERT/REPLACE/UPDATE/DELETE不受LOCK TABLES FOR BACKUP影响。执行该语句不会刷新表,即存储引擎不会强制关闭表,并且表不会从表缓存中排出,所以仅等待冲突的语句完成(即DDL和更新到非事务性表)。2. LOCK BINLOG FOR BACKUP语句:使用另一种新的MDL锁定类型来阻止所有可能会更改二进制日志位置或Exec_Master_Log_Po或Exec_Gtid_Set的操作,如SHOW MASTER / SLAVE状态。即用来阻塞所有对binary log的修改。3. UNLOCK BINLOG语句:释放当前链接获取的LOCK BINLOG FOR BACKUP锁。2.2有Backup lock前的备份逻辑# copy InnoDB dataFLUSH TABLES WITH READ LOCK;# copy .frm, MyISAM, etc.# get the binary log coordinates# finalize the background copy of REDO logUNLOCK TABLES;2.3有Backup lock后的备份逻辑# copy InnoDB dataLOCK TABLES FOR BACKUP;# copy .frm, MyISAM, etcLOCK BINLOG FOR BACKUP;# finalize the background copy of REDO logUNLOCK TABLES;# get the binary log coordinatesUNLOCK BINLOG;2.4 Backup lock源码          sql_parse.cc        switch (lex->sql_command) {                 …         //处理UNLOCK BINLOG语句,这里释放全局的binlog lock           case SQLCOM_UNLOCK_BINLOG:             if (thd->backup_binlog_lock.is_acquired())               thd->backup_binlog_lock.release(thd);                       my_ok(thd);             break;         …         //处理LOCK TABLES FOR BACKUP语句,这里会拿到backup lock           case SQLCOM_LOCK_TABLES_FOR_BACKUP:             if (!lock_tables_for_backup(thd))               my_ok(thd);                   break;         //处理LOCK BINLOG FOR BACKUP语句           case SQLCOM_LOCK_BINLOG_FOR_BACKUP:         //这里会拿到一个全局的binlog lock,在MYSQL_BIN_LOG::commit()时新增了代码要获取到这个锁才能执行ordered_commit()。         //这样就当执行了LOCK BINLOG FOR UPDATE后,就可以阻止binlog的更新。             if (!lock_binlog_for_backup(thd))               my_ok(thd);                   break;         …         }3 关于FTWRL3.1 FTWRL的问题:Percona官方明确给出的FTWRL存在的问题。3.2 权限及与其他全局锁的交互1. FLUSH TABLES WITH READ LOCK与LOCK TABLES FOR BACKUP和LOCK BINLOG FOR BACKUP一样,都需要RELOAD权限。2. 与其他全局锁的交互:如果当前连接已经拥有FLUSH TABLES WITH READ LOCK锁,LOCK TABLES FOR BACKUP和LOCK BINLOG FOR BACKUP都不起作用,因为FTWRL是一个更严格的锁。 如果FLUSH TABLES WITH READ LOCK在已获取LOCK TABLES FOR BACKUP或LOCK BINLOG FOR BACKUP的连接中执行,则FLUSH TABLES WITH READ LOCK将失败并显示错误。如果服务器以只读模式运行(即read_only设置为1),则对于备份不安全的语句将被阻塞或失败,并显示错误,取决于它们是否在拥有LOCK TABLES FOR BACKUP锁的相同连接或其他连接中执行. 3.3 FTWRL相关源码    sql_parse.cc        switch (lex->sql_command) {                 …             // Fall through.           case SQLCOM_FLUSH:           {             int write_to_binlog;             if (check_global_access(thd,RELOAD_ACL))               goto error;                       if (first_table && lex->type & REFRESH_READ_LOCK)             {               /* Check table-level privileges. */               if (check_table_access(thd, LOCK_TABLES_ACL | SELECT_ACL, all_tables,                                      FALSE, UINT_MAX, FALSE))                 goto error;               if (flush_tables_with_read_lock(thd, all_tables))                 goto error;               my_ok(thd);               break;             }         …         }          sql_reload.cc文件        bool flush_tables_with_read_lock(THD *thd, TABLE_LIST *all_tables)                 {         …           //这里会拿到表的SNW锁(MDL_SHARED_NO_WRITE, SNW 可升级锁,其它线程能读metadata,数据可读不能读,           //持锁者可以读写,可以升级成X锁)           if (lock_table_names(thd, all_tables, NULL,                                thd->variables.lock_wait_timeout,                                MYSQL_OPEN_SKIP_SCOPED_MDL_LOCK))         goto error;                     //清理表缓存           for (table_list= all_tables; table_list;                table_list= table_list->next_global)           {             /* Request removal of table from cache. */             tdc_remove_table(thd, TDC_RT_REMOVE_UNUSED,                              table_list->db,                              table_list->table_name, FALSE);             /* Reset ticket to satisfy asserts in open_tables(). */             table_list->mdl_request.ticket= NULL;           }           //打开表,并获取表锁           if (open_and_lock_tables(thd, all_tables, MYSQL_OPEN_SKIP_SCOPED_MDL_LOCK,                                    &lock_tables_prelocking_strategy) ||               thd->locked_tables_list.init_locked_tables(thd))           {             goto error;           }           thd->variables.option_bits|= OPTION_TABLE_LOCK;         …         }3.4 Backup Lock与FTWRL的区别        1)相同点      blocks updates to MyISAM, MEMORY, CSV and ARCHIVE tables;    blocks DDL against any tables;    does not block updates to temporary and log tables.2)不同点      does not invalidate the Query Cache;    never waits for SELECT queries to complete regardless of the storage engines involved;    never blocks SELECTs, or updates to InnoDB, Blackhole and Federated tables.
  • [技术干货] 华为云 SQL Server 2017 企业版首发,轻松应对海量数据
    日前,华为云数据库高可用只读副本 SQL Server 2017 企业版首发,采用微软 Always On 高可用架构,支持读写分离,负载均衡。该版本最高支持 5 只读副本,搭载华为云智能生态服务,助力用户轻松应对海量数据处理,让运维无忧!作为全球广受欢迎的商用数据库之一,SQL Server 不但性能卓越稳定,集成微软 CRM,SharePoint,PowerBI 等所有旗下产品,而且云化后拥有即开即用、弹性伸缩、轻松管理、经济实用等特点。 SQL Server 2017 在 Linux、Docker 以及微软云端环境 Azure 上均可执行,推出后成为第一个为云而生、也能在本地部署,且跨不同操作系统的数据库。其中企业版提供全面的高端数据中心功能,性能优异且具有端到端的商业智能,支持最终用户访问深层数据,是众多商用数据库用户的理想选择。 众所周知,在网站创立初期,从成本角度考虑,用户往往使用单台机器提供集中式服务。但随着业务的发展和应用增长,数据库无论在性能还是稳定性上,都面临挑战。 尤其在一些大型网站或者应用中,高并发场景下,单台 SQL Server 服务器难以支撑非常大的访问压力。因此,要解决这个问题,就会用到负载均衡或读写分离。 负载均衡是把多台机器组成一个集群对外提供服务,在云数据库服务中则是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户无需关心真正提供服务的是哪台机器,只需专注业务发展。 读写分离通过将数据从主服务器同步到其他从服务器,提供非实时的查询功能,扩展性能并提高并发性,是中型规模应用的数据库系统常见设计方案。 数据库实现读写分离后,对用户而言好处颇多: 1. 通过将“读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU、内存、存储、网络资源的争用;2. 主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性;3. 在应用程序提交了报表请求、不合理的查询请求时,不会导致长时间的锁表;4. 建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失。 此番华为云数据库首次推出支持 5 只读副本的云数据库 SQL Server 2017 企业版,对业务发展日新月异的互联网用户而言,无论是读写分离还是负载均衡的支持,都是一大喜讯。 值得一提的是,华为云数据库近期还推出了智能运维助手云DBA、云端数据管理服务 DAS、数据迁移服务 DRS 等配套服务,提供了丰富的数据库容灾/迁移方案和完善的数据库生态,帮助客户完成数据库搭建、运维、管理的智能化和自动化,实现业务及应用轻松上云,便捷管理。 后续,华为云SQL Server 将持续支持更多功能,将数据库人才从繁复的日常开发、运维中解放出来,投入到架构升级、应用优化等更重要的工作中去,打造智能时代的云数据库服务标杆。免费试用云数据库畅销引擎:https://activity.huaweicloud.com/free_test/index.html 了解华为云SQL Server 更多信息:https://www.huaweicloud.com/product/mssql.html想了解华为云数据库更多信息,请关注华为云数据库公众号。
  • Superset使用指导书
    1.   Superset介绍      Superset是由Python编译的BI工具,最初是Airbnb开源的数据分析与可视化平台,现已归属于Apache孵化项目。Superset可以实现对TB量级的数据进行处理,兼容多种使用SQL语句的数据库,并在内部实现SQL编辑查询等操作。(该文档建立在已正确安装superset且已开通相关端口的前提下,并以软开云基于大数据的天气情况统计课程为样例进行介绍)         Superset Github地址:https://github.com/airbnb/superset       Superset官网地址:http://airbnb.io/projects/superset/2.   添加数据源2.1   在菜单栏点击“数据源->数据库”,进入到数据页面,点击右上角“添加新纪录”按钮进行数据源的配置。             SQLAlchemy是Python语言下的一款开源软件,它提供了SQL工具包及对象关系映射工具。Superset安装完成之后,就可以直接连接SQLite数据库。同时也支持连接常见的数据库类型,不过需要安装依赖。相关数据库安装命令及对应的SQLAlchemy URI 开头部分如下:数据库安装命令SQLAlchemy URI 开头SQLite数据库自带sqlite://MySQL数据库pip install mysqlclientmysql://Postgres数据库pip install psycopg2postgresql+psycopg2://Presto数据库pip install pyhivepresto://Oracle数据库pip install cx_Oracleoracle://Redshift数据库pip install sqlalchemy-redshiftpostgresql+psycopg2://MSSQL数据库pip install pymssqlmssql://Impala数据库pip install impylaimpala://SparkSQL数据库pip install pyhivejdbc+hive://Greenplum数据库pip install psycopg2postgresql+psycopg2://Athena数据库   pip install “PyAthenaJDBC>1.0.9”awsathena+jdbc://Vertica数据库pip install sqlalchemy-vertica-pythonvertica+vertica_python://ClickHouse数据库pip install sqlalchemy-clickhouseclickhouse://       更多关于SQLAlchemy URI的配置信息请参照其官方说明:  http://docs.sqlalchemy.org/en/re ... .html#database-urls       在Superset中也可以利用SQLAchemy提供的参数接口来配置数据库连接信息,即如上图所示的扩展部分,参数值是一个Json字符串。该Json字符串中包含额外的配置参数。其中metadata_params所指定的参数会传递给sqlalchemy.MetaData调用;engine_params所指定的参数会传递给sqlalchemy.create_engine调用。 更多详细配置信息请参考官方文档。http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine2.2   在配置完上述信息之后,可以点击“测试连接”来测试连接是否正确。如果连接成功,会弹出Seems OK 窗口,并在下方展示该数据库对应的表。2.3   下方的选项中推荐选取 “在SQL工具箱中公开”和“Allow Run Sync”。其他默认即可。勾选“在SQL工具箱中公开”后会在SQL工具箱的SQL编辑器页面中显示该数据库。       3.   数据查询     菜单栏中的SQL工具箱提供了针对数据库的SQL查询功能,可以对数据库中的表数据进行查询,保存,制定指标参数等,最后对图表进行展示。3.1   在菜单栏点击“SQL工具箱”->“SQL编辑器”,进入数据库数据查询页面。     在页面左侧可以选择使用的数据库和表,然后在右侧编辑板块编写SQL语句,并点击“Run Query”,并在“Result”中查询结果。如下列所示SQL语句select hive_weather.province as   province,hive_weather.city as city,hive_weather.zone as   zone,hive_weather.time as time, hive_weather.maxtemperature as maxtemperature,hive_weather.mintemperature as mintemperature, hive_weather.weather as weather,hive_weather.winddirection as winddirection, hive_weather.windpower as windpower from hive_weather              3.2   在结果显示成功之后,点击“Visualize”按钮并按照需求进行配置。如选取展示图表类型,数据表的名称,此处还会列出表中所有的列名,可以选择要进行展示的列,任何有关时间或者日期的列都应该勾选“is_date”时间项,另外可以通过“agg_func”项来制定所需的指标参数,最后点击“Visualize”按钮来展示查询到的结果,同时会将该表进行保存。       3.3   图表的可视化页面主要分为两部分,页面左侧为图表的数据选取设置界面,不同的图表类型对应的设置界面略有不同(此处仅以柱状图为例进行介绍)。右侧为图表的图形展示,也可以点击“View Query”按钮来查看后台运行的SQL语句。       “Datasource & Char Type”区域中,     数据源:用来指定所要展示的数据表,可以通过名称右边的编辑图标来编辑图表。图表类型:用来指定图表展示的形式,如柱状图、扇形图等。“Time”区域中,     时间字段:用来指定一个勾选了时间类型的列,Time Grain:用来指定时间的粒度,Since和Until分别用来展示指定时间范围的下限和上限。  柱状图“Query”区域中,     Metrics:指定按照哪个属性进行统计,在y轴展示;Series:指定按照什么属性对数据进行划分,在x轴展示;Breakdowns:指定每个series中的数据按照什么属性进行划分,Row limit:指定展示多少条统计结果记录。(例如统计北京市历史上各个地区的风向的天数)柱状图“Chart Options”区域中,     此处为设置展示的图表相关的各个属性,如展示颜色,x轴、y轴标签等属性。“SQL”区域中,     在where语句中以AND的方式添加条件语句,需手动添加语句。“筛选”区域中,     在where语句中以AND的方式添加条件语句,可以进行指令选取操作。       在设置好之后可以点击左上角的“Run Query”来运行,也可以点击右上角的“View Query”来查看后台运行的SQL语句,运行成功后可以点击“Save”来保存,并决定是否添加或者添加到哪个看板中。3.4   “Datasource & Char Type”区域中可以对图表进行编辑。点击进入编辑页面。                    “详细”页面展示了构建该表时的一些基本信息。       “列列表”页面会列出表中所有的列名,并标明该列在superset中的使用方式,如使用某个列进行分组,求和或统计等,可以根据需求重新勾选。                 “指标列”展示了在之前设置的指标参数,也可以在此对之前的指标进行修改,也可以添加新的指标参数,如对某地区的风速,风向等的天数的统计。               4.   切片制作      可以将数据的各项分析指标表示成一个个切片来展现出来。4.1   点击菜单栏“切片”按钮进入“切片列表”页面,可以对之前的切片进行重新编辑,也可以点击右上角“添加按钮”来新建切片。           在新建时,需要选择数据源,变指定展示类型,如果不确定所要展示的类型,就可以先随便选取一个,然后在切片的编辑页面中进行调整。4.2   返回“切片列表”页面,点击相应的切片名称,进入切片的编辑和展示页面,该页面和上述相同,不再赘述。       5.   看板制作      在制作完所有的需求切片之后,可以将这些切片添加到一个或者多个看板上进行展示。5.1   点击菜单栏“看板”,进入“仪表盘列表”页面,可以对之前的看板进行重新编辑,也可以点击右上角“添加按钮”来新建看板。5.2   进入看板“添加仪表盘”页面,来设置看板的标题,所要展示的切片等信息,并点击保存。5.3   返回“仪表盘列表”页面,点击刚才创建的看板名称,进入到看板展示页面。在图表加载显示之后,可以点击右上角“Edit Dashboard”按钮来对看板的位置、大小以及属性等进行调整,也可以添加或者删除切片。   
  • [技术干货] RDS SQL SERVER 上主账号rdsuser的权限边界,以及他创建的子账号授权范围(新增2008R2)
    适用场景:通过诠释rdsuser账号的权限边界,让用户能够更好的使用和理解华为云RDS SQL SERVER。同时给出了全套的授权脚本,用户可以通过使用该脚本在rdsuser下创建子账号并进行有效管理。 rdsuser权限如下:实例级权限:实例级角色权限:[processadmin][setupadmin]实例级对象权限:ALTER ANY CONNECTIONALTER ANY LOGINALTER ANY SERVER ROLEALTER SERVER STATEALTER TRACECONNECT ANY DATABASECONTROL SERVERCONNECT SQLCREATE ANY DATABASESELECT ALL USER SECURABLESVIEW ANY DEFINITIONVIEW ANY DATABASEVIEW SERVER STATE数据库权限:master:publicMsdb:PublicSQLAentUserRoleModel:PublicRdsadmin:PublicOtherDB:Db_Owner rdsuser子账号创建+授权脚本:为了帮助大家快速的通过rdsuser创建子账号,并授予对应的最大操作权限,特此给出授权脚本。备注:本脚本只适用于SQL SERVER 2014 及以上版本,2008R2在下面use [master] DECLARE @DBName NVARCHAR(128)DECLARE @SQL NVARCHAR(max)DECLARE @Login_Name nvarchar(128)DECLARE @Login_Password nvarchar(128) set @Login_Name = 'TestLogin3'        --change your login nameset @Login_Password = '1qaz!QAZ'         SET @SQL='            USE [master] CREATE LOGIN  '+@Login_name+' WITH PASSWORD=N'''+ @Login_Password +''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF                       alter server role [processadmin] add member  '+@Login_name+'            alter server role [setupadmin] add member '+@Login_name+'            GRANT VIEW SERVER STATE TO '+@Login_name+' WITH GRANT OPTION            GRANT VIEW ANY DEFINITION TO '+@Login_name+' WITH GRANT OPTION            GRANT VIEW ANY DATABASE TO '+@Login_name+' WITH GRANT OPTION            GRANT CREATE ANY DATABASE TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER SERVER STATE TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER TRACE TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER ANY SERVER ROLE TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER ANY LOGIN TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER ANY CONNECTION TO '+@Login_name+' WITH GRANT OPTION            GRANT CONNECT SQL TO '+@Login_name+' WITH GRANT OPTION            GRANT VIEW SERVER STATE TO '+@Login_name+' WITH GRANT OPTION        'print @SQL        exec (@SQL)         SET @SQL='            use [msdb]            if exists(select top 1 1 from sys.sysusers where name = '''+ @Login_Name +''')            begin                ALTER USER '+@Login_name+' with login = '+@Login_name+';            end            else            begin                CREATE USER '+@Login_name+' FOR LOGIN '+@Login_name+';            end            ALTER ROLE [SQLAgentUserRole] ADD MEMBER '+@Login_name+'            GRANT ALTER ON ROLE::[SQLAgentUserRole] TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER ANY USER TO  '+@Login_name+'  WITH GRANT OPTION            GRANT EXEC ON msdb.dbo.sp_delete_database_backuphistory TO   '+@Login_name+'    WITH GRANT OPTION            GRANT EXEC ON msdb.dbo.sp_purge_jobhistory TO   '+@Login_name+'    WITH GRANT OPTION             GRANT SELECT ON msdb.dbo.sysjobs TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysschedules TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobsteps TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobhistory TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.syscategories TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobschedules TO '+@Login_name+'  WITH GRANT OPTION;        'print @SQL        exec (@SQL)         declare DBName_Cursor cursor  for        select quotename(name) from sys.databases where database_id > 4 and state = 0        and name not like '%$%'        and name <> 'rdsadmin'        open DBName_Cursor            fetch next from DBName_Cursor into @DBName            WHILE @@FETCH_STATUS = 0            begin                SET @SQL='        USE ' + (@DBName) + '                            if exists(select top 1 1 from sys.sysusers where name = '''+ @Login_Name +''')                            begin                                ALTER USER '+@Login_name+' with login = '+@Login_name+';                                ALTER ROLE [db_owner] ADD MEMBER '+@Login_name+';                            end                            else                            begin                                CREATE USER '+@Login_name+' FOR LOGIN '+@Login_name+';                                ALTER ROLE [db_owner] ADD MEMBER '+@Login_name+';                            end                            'print @SQL                EXEC (@SQL)                fetch next from DBName_Cursor into @DBName            end        close DBName_Cursor        deallocate DBName_Cursor    备注:本脚本只适用于SQL SERVER 2008R2 版本,2014以上版本看上面滴        use [master]        DECLARE @DBName NVARCHAR(128)        DECLARE @SQL NVARCHAR(max)        DECLARE @Login_Name nvarchar(128)        DECLARE @Login_Password nvarchar(128)        set @Login_Name = 'TestLogin7'        --change your login name        set @Login_Password = '1qaz!QAZ'        SET @SQL='        USE [master]        CREATE LOGIN  '+@Login_name+' WITH PASSWORD=N'''+ @Login_Password +''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF        EXEC sp_addsrvrolemember '+ @Login_name +' , [processadmin]        EXEC sp_addsrvrolemember '+ @Login_name +' , [setupadmin]             GRANT VIEW SERVER STATE TO '+@Login_name+' WITH GRANT OPTION        GRANT VIEW ANY DEFINITION TO '+@Login_name+' WITH GRANT OPTION        GRANT VIEW ANY DATABASE TO '+@Login_name+' WITH GRANT OPTION        GRANT CREATE ANY DATABASE TO '+@Login_name+' WITH GRANT OPTION        GRANT ALTER SERVER STATE TO '+@Login_name+' WITH GRANT OPTION        GRANT ALTER TRACE TO '+@Login_name+' WITH GRANT OPTION        GRANT ALTER ANY LOGIN TO '+@Login_name+' WITH GRANT OPTION        GRANT ALTER ANY CONNECTION TO '+@Login_name+' WITH GRANT OPTION        GRANT CONNECT SQL TO '+@Login_name+' WITH GRANT OPTION        GRANT VIEW SERVER STATE TO '+@Login_name+' WITH GRANT OPTION        '        print @SQL        exec (@SQL)        SET @SQL='            use [msdb]            if exists(select top 1 1 from sys.sysusers where name = '''+ @Login_Name +''')            begin                ALTER USER '+@Login_name+' with login = '+@Login_name+';            end            else            begin                CREATE USER '+@Login_name+' FOR LOGIN '+@Login_name+';            end            EXEC sp_addrolemember [SQLAgentUserRole], '+@Login_name+'                               GRANT ALTER ON ROLE::[SQLAgentUserRole] TO '+@Login_name+' WITH GRANT OPTION            GRANT ALTER ANY USER TO  '+@Login_name+'  WITH GRANT OPTION            GRANT EXEC ON msdb.dbo.sp_delete_database_backuphistory TO   '+@Login_name+'    WITH GRANT OPTION            GRANT EXEC ON msdb.dbo.sp_purge_jobhistory TO   '+@Login_name+'    WITH GRANT OPTION            GRANT SELECT ON msdb.dbo.sysjobs TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysschedules TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobsteps TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobhistory TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.syscategories TO '+@Login_name+'  WITH GRANT OPTION;            GRANT SELECT ON msdb.dbo.sysjobschedules TO '+@Login_name+'  WITH GRANT OPTION;        '        print @SQL        exec (@SQL)                declare DBName_Cursor cursor  for        select quotename(name)from sys.databases where   database_id > 4 and state = 0        and name not like '%$%'        and name <> 'rdsadmin'        open DBName_Cursor        fetch next from DBName_Cursor into @DBName        WHILE @@FETCH_STATUS= 0        begin            SET @SQL='        USE '+ (@DBName)+ '                        if exists(select top 1 1 from sys.sysusers where name = '''+ @Login_Name +''')                        begin                            ALTER USER '+@Login_name+' with login = '+@Login_name+';                                EXEC sp_addrolemember N''db_owner'', N'''+@Login_name+''';                                                                end                        else                        begin                            CREATE USER '+@Login_name+' FOR LOGIN '+@Login_name+';                            EXEC sp_addrolemember N''db_owner'', N'''+@Login_name+''';                        end                        '        print @SQL            EXEC (@SQL)            fetch next from DBName_Cursor into @DBName        end        close DBName_Cursor        deallocate DBName_Cursor        
  • [技术干货] 华为云推出客户端数据管理服务,可视化操作大幅提高工作效率
    俗话说:人强不如家伙强,多做不如精做好;工欲善其事,必先利其器。云技术的发展和云市场的成熟,让各行各业上云势头如日中天。应用上云、业务上云,最终都离不开数据上云。那么,如何方便快捷的对云上数据进行管理呢?近期,华为云推出一款客户端数据管理服务,帮助用户实现数据可视化直接管理,大幅提高工作效率。 华为云数据管理服务(Data Admin Service),简称 DAS,是一款专业的简化数据库管理工具,提供业界领先的可视化操作界面,直接对数据结构进行查询、变更操作,旨在让数据管理变得安全和简单。                                  华为云数据管理服务 DAS 众所周知,在云上创建数据库后,云上管理关系型数据库(RDS)数据结构,经常会面临需要安装客户端,才可以访问 RDS 的问题。不但安装麻烦,而且使用不便,给用户带来不少困扰。 DAS 通过可视化界面连接和管理数据库,在云端专用通道管理数据,并且借助华为云的高安全机制,严格控制数据库访问。在云上管理数据库的同时,实现了云研发测试、快速部署和访问数据库,大大提升研发效率。                *DAS 系统架构图(目前支持引擎: MySQL、SQL Server) 三大场景,助推企业用好数据库 数据访问DAS 提供了类似 Excel 的表格方式编辑数据,让不懂 SQL 查询语言的用户也能无障碍增删、改查表数据以及统计分析。此外用户还可以保存常用的 SQL,随时引用执行,使得工作效率更高效。 结构管理 DAS 简化数据库结构设计,支持可视化的目录结构管理。例如导航树形结构,可清晰展示和管理各个对象,让数据管理更方便。此外,DAS 能在可视化页面实现 DDL 数据库模式定义,从而轻松完成数据结构变更。 3. 数据导入导出DAS 提供了 Excel 或者 INSERT (用于向表格中**新的行)语句类型的快速导出和导入数据功能,提供 SQL 模板,或自定义 SQL 窗口输入并执行计划,并根据输入的 SQL 语句导出记录,支持文档型、字符集数据导入。 值得一提的是,DAS 采用华为云专用的云端通道,严格控制访问,保障用户数据安全。在安全方面,华为云提供 VPC、子网、安全组、VPN、SSL 在内的一系列网络隔离与权限控制策略,搭配业界领先的DBSS数据库安全防护技术,多种行业安全合规、清晰的安全责任界定,安全架构可谓层层加固。 近期,DAS 上线了支持用户权限管理,用户连接、主机连接、数据库资源访问管理,事务管理,表结构DDL导出下载、表属性查看,表结构 DDL 对比等新功能。不但可在 Web 页面直接勾选,进行权限授权,而且可以对测试环境和生产环境进行差异比较,进一步满足用户的数据管理需求。 目前,DAS 已集成到华为云的管理控制台,用户创建 RDS 完成即可连接访问,实现可视化数据库管理操作。申请免费体验,请移步官网:https://www.huaweicloud.com/product/das.html 配套数据库引擎免费试用请点击:https://activity.huaweicloud.com/free_test/index.html 福利时间:华为云产品活动月,数据库产品全场 3.5 折起,安全产品全场低至 1 折;不限新老用户,下单即享折扣! 2018 华为全联接大会将于10月份在上海召开,届时将首发华为AI战略和全栈全场景的解决方案,并携合作伙伴带来更多诸如“秦渲云”这样AI、云、大数据、5G、IoT、视频等在各行业的创新与实践,惠及更多开发者人群,“+智能,见未来”我们拭目以待。
  • [技术干货] RDS SQL SERVER通过Generate Script(生成脚本)功能对数据库进行逻辑迁移
    适用场景:1.用户在本地的实例或者在ECS上的实例2.数据库整体大小不是很大(最好不超过300M)3.适用于华为云合营云场景,在没有部署DRS,甚至没有公网IP的情况下可选择本方案 操作步骤:1.在你本地或ECS上,通过SSMS连接你的实例2.通过SQL SERVER自带的脚本生成工具,将数据库结构脚本和每个对象的静态数据库通过SQL脚本生成出来,步骤如下:a.选中要生成schema脚本的数据库,点击鼠标右键选择任务-->生成脚本    b.在导航页中根据提示选择下一步,并确认要导出的对象,可选全部,也可以选择独立对象模块导出    c.下一步,选择将要导出的文件保存到对应的位置i.当你的数据库整体大小<=50M时,可以选择单个文件ii.当你的数据库大小>50M时,可以选择每个对象一个文件    d.同时点击高级按钮进入详细选项页面,根据实际需要选择具体脚本生成规则和相关细节,例如:触发器,索引,唯一键,主键,服务器版本等重要选项。特别注意:要编写脚本的数据库的类型选择为架构和数据    e.最后点击下一步完成脚本生成5.将生成的每一个SQL脚本文件在SSMS上打开,远程连接到RDS对应实例上,逐个进行执行就可以将数据库结构和数据在远端重新生成。 备注:该方案在某些表中数据库特别大的时候,可能无法直接在SSMS管理工具中直接打开执行,需要通过SQLCMD命令远程连接到实例端直接进行执行。例如:sqlcmd -s 127.0.0.1 -i g:\1.sql -U rdsuser -P 123456官方地址:https://docs.microsoft.com/zh-cn/sql/relational-databases/scripting/sqlcmd-start-the-utility?view=sql-server-2017
总条数:865 到第 页
上滑加载中