云服务器内容精选

  • 步骤1:测试连通性并安装SQL Server Management Studio 在RDS“实例管理”页面,单击实例名称进入“基本信息”页面。 在“连接信息”模块获取实例的公网地址和数据库端口。 图1 连接信息 如果没有绑定公网地址,请参见绑定弹性公网IP。 打开cmd命令窗,测试是否可以正常连接到RDS for SQL Server实例公网地址的端口。 telnet 公网地址 1433 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看RDS的安全组的入方向规则,需要将RDS for SQL Server实例公网地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 在本地打开浏览器,访问Microsoft网站,以SQL Server Management Studio 18.0为例,下载安装包。 双击安装包,按照向导完成安装。
  • 注意事项 因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和华为云关系型数据库实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当华为云关系型数据库实例加入该安全组后,即受到这些访问规则的保护。 默认情况下,一个用户可以创建100个安全组。 默认情况下,一个安全组最多只允许拥有50条安全组规则。 一个RDS实例允许绑定多个安全组,一个安全组可以关联多个RDS实例。 为一个安全组设置过多的安全组规则会增加首包延时,因此,建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的华为云关系型数据库实例时,需要为安全组添加相应的入方向规则。 为了保证数据及实例安全,请合理使用权限。建议使用最小权限访问,并及时修改数据库默认端口号(1433),同时将可访问IP地址设置为远程主机地址或远程主机所在的最小子网地址,限制远程主机的访问范围。 源地址默认的IP地址0.0.0.0/0是指允许所有IP地址访问安全组内的华为云关系型数据库实例。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
  • 操作场景 安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求,并相互信任的弹性云服务器和华为云关系型数据库实例提供访问策略。 为了保障数据库的安全性和稳定性,在使用华为云关系型数据库实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。 内网连接RDS实例时,设置安全组分为以下两种情况: E CS 与RDS实例在相同安全组时,默认ECS与RDS实例互通,无需设置安全组规则,执行通过内网连接RDS for SQL Server实例(Windows方式)。 ECS与RDS实例在不同安全组时,需要为RDS和ECS分别设置安全组规则。 设置RDS安全组规则:为RDS所在安全组配置相应的入方向规则。 设置ECS安全组规则:安全组默认规则为出方向上数据报文全部放行,此时,无需对ECS配置安全组规则。当在ECS所在安全组为非默认安全组且出方向规则非全放通时,需要为ECS所在安全组配置相应的出方向规则。 本节主要介绍如何为RDS实例设置相应的入方向规则。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
  • RDS for SQL Server入门实践 当您购买并连接到RDS for SQL Server数据库实例后,可以根据自身的业务需求使用RDS提供的一系列常用实践。 表1 RDS for SQL Server常用最佳实践 实践 描述 使用规范 实例使用规范 介绍RDS for SQL Server在实例规格、数据库连接、数据库迁移、以及数据库使用方面的建议。 部署报表服务 RDS for SQL Server 如何将线下SSRS报表服务部署上云 介绍如何在RDS for SQL Server使用SSRS(Reporting Services)报表服务。 数据迁移 使用DAS的导出和导入功能迁移RDS for SQL Server数据 介绍如何使用DAS导出数据,再导入到RDS for SQL Server数据库。 使用S SMS 客户端导入导出功能将ECS上的SQL Server数据库迁移到RDS for SQL Server 介绍如何使用SQL Server自带的导入导出功能将ECS上的SQL Server数据库迁移到RDS for SQL Server。 使用SSMS客户端导入导出功能将本地SQL Server数据库迁移到RDS for SQL Server 介绍如何使用SQL Server自带的导入导出功能将本地SQL Server数据库迁移到RDS for SQL Server。 RDS for SQL Server 如何将线下SSRS报表服务部署上云 介绍如何在RDS for SQL Server使用SSRS(Reporting Services)报表服务。 将RDS for SQL Server备份迁移到RDS for SQL Server 介绍如何使用DRS将源库数据备份迁移到RDS for SQL Server数据库。 将RDS for SQL Server同步到RDS for SQL Server 介绍如何使用DRS将RDS for SQL Server同步到RDS for SQL Server数据库。 将本地SQL Server备份迁移到RDS for SQL Server 介绍如何使用DRS将本地SQL Server备份迁移到RDS for SQL Server数据库。 将本地SQL Server同步到RDS for SQL Server 介绍如何使用DRS将本地SQL Server同步到RDS for SQL Server数据库。 其他云SQL Server备份迁移到RDS for SQL Server 介绍如何使用DRS将其他云上SQL Server备份迁移到RDS for SQL Server数据库。 将其他云SQL Server同步到RDS for SQL Server 介绍如何使用DRS将其他云上SQL Server同步到RDS for SQL Server数据库。 数据备份 同区域自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 同区域手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 跨区域自动备份 介绍如何将备份文件存放到另一个区域存储,某一区域的实例故障后,可以在异地区域使用备份文件在异地恢复到新的RDS实例,用来恢复业务。 数据恢复 通过全量备份文件恢复云数据库RDS for SQL Server实例数据 介绍如何使用已有的自动备份和手动备份,将实例数据恢复到备份被创建时的状态。该操作恢复的为整个实例的数据。 将云数据库 RDS for SQL Server实例的数据恢复到指定时间点 介绍如何使用已有的自动备份,恢复实例数据到指定时间点。 父主题: RDS for SQL Server快速入门
  • 约束限制 开启或关闭实例级别的FileStream特性需要重启实例,重启过程大致需要3~5分钟,重启过程中会中断业务,实例将不可用,请谨慎操作。 目前仅支持单机实例、2017企业版集群实例、2019企业版集群实例、2022企业版集群实例开启或关闭该特性。 开启并创建该特性数据库后,不支持关闭。如需关闭,请先删除该特性数据库。 目前不支持通过V3接口创建FileStream特性的数据库。通过API接口创建数据库的详细内容请参见SQL Server创建数据库。 开启FileStream后不支持单机转主备。 开启FileStream后,期间所产生的备份文件只允许恢复到已有实例(非原实例)或者新实例,且恢复的目标实例只能是单机实例或2017企业版集群或2019企业版集群实例。 恢复到已有实例(非原实例):已有实例必须已提前开启FileStream。 恢复到新实例:新实例将自动同步开启FilesStream。
  • 相关参数 filestream access level 云数据库默认值:“0” 作用:文件流访问级别选项。可以用于更改此RDS for SQL Server实例的FILESTREAM访问级别。 参数值:如需修改参数值,详细步骤请参见修改RDS for SQL Server实例参数。 0:表示关闭。 1:表示允许T-SQL访问。 2:允许完全访问。 影响: 开启FileStream特性后,该参数只允许修改1或2才能生效。 关闭FileStream特性后,该参数只能修改0生效。
  • 操作步骤 创建c#函数,编译出一个RDS for SQL Server的dll。 图1 c#函数代码 创建函数详细说明请参见官方文档。 使用SSMS等工具连接数据库。 图2 连接数据库 选择需要创建程序集的数据库,添加对应的程序集。 只能创建safe模式(权限集显示为安全),不能创建其他模式。 dll文件会以十六进制的形式存入。如图4所示。 图3 新建程序集 图4 dll文件 执行程序,如图5所示表示执行成功。程序集中新增一个TESTS程序集,如图6所示。 图5 执行结果 图6 TESTS程序集
  • 操作背景 公共语言运行库(CLR)是Microsoft .NET Framework 的核心,为所有.NET Framework代码提供执行环境。在CLR中运行的代码称为托管代码。CLR提供执行程序所需的各种函数和服务,包括实时(JIT)编译、分配和管理内存、强制类型安全性、异常处理、线程管理和安全性。 SQL CLR(SQL Common Language Runtime)是自SQL Server 2005才出现的新功能,它将.NET Framework中的CLR服务注入到SQL Server中,让SQL Server的部分数据库对象可以使用.NET Framework的编程语言开发(当前只支持VB.NET和C#),包括预存程序、用户自定义函数、触发程序、用户自定义类型以及用户自定义汇总函数等功能。但是要想执行CLR代码,首先要开启CLR特性。 更多介绍请参见Microsoft SQL Server官网公共语言运行时 (CLR) 集成编程概念。 CLR集成安全性相关内容请参见Microsoft SQL Server官网CLR 集成安全性。
  • 数据库迁移 迁移上云完成后,需要进行以下检查: 需要检查权限完整性。权限会影响对于数据库的方案,迁移仅会完成数据恢复,数据库用户恢复,登录名等其他服务级权限需要重新创建,并且关联数据库账户。 需要对索引进行重建。由于迁移完成后数据文件的物理环境发生了改变,数据库索引会失效,需要对索引进行重建,否则可能会导致数据库性能有明显下降。 对比参数配置。迁移上云后RDS for SQL Server会使用云上的参数组,需要及时对比云下参数配置和云上是否匹配。由于云下参数配置是经过长期验证,所以请及时更新云上的参数配置。
  • 使用建议 不推荐创建加域实例,云数据库 RDS for SQL Server支持创建加域实例,加域实例的域控服务器在用户侧,用户拥有较高权限,域控服务器组策略配置会影响加入该域的机器,用户侧域控规则修改会导致数据库实例的权限安全风险增加。 单实例数据库数量不要超过100个。单实例可以承载的数据库数量跟实例规格相关,数据库数量过多会导致实例性能下降,占用Worker Thread等资源。 应用不能依赖SysAdmin权限。具有SysAdmin角色的账号有超级管理员权限,使用不当会导致数据库安全与稳定性受到威胁,云数据库不开放超级管理员权限,应用使用数据库不能依赖于此权限。 不要在系统库创建表。用户数据请创建用户自定义库存放,不要在系统库创建任何表写入数据,虽然开放了使用系统库的权限,但是任何在系统库存放的数据都是不安全的。 数据库不要打开Auto Close属性。用户库可以设置Auto Close属性,打开该属性后会导致包括建立复制关系无法建立的问题,并且该属性设置后不能正常的使用该库,强烈建议不要设置。 不要将数据库设置为Single User模式。Single User模式只允许一个Session访问数据库,会导致其他Session无法访问造成云数据库的运维问题。设置Single User模式请及时恢复到Multi User模式。 慢日志不要长时间打开。慢日志可以帮助进行慢SQL分析,但是长时间打开会导致性能损失,建议在不需要跟踪分析SQL问题时关闭慢日志。 定时重建索引。数据库在长时间使用后可能会产生较多的索引碎片,导致数据库访问性能下降,需要定时进行索引重建,可以采用创建SQL Agent Job的方式定时重建索引,建议一个月重建一次索引。 定时更新统计信息。数据库统计信息需要经常更新对于性能有益。建议采用创建SQL Agent Job的方式每周更新一次统计信息。 关注数据库大小,及时收缩数据库。数据库长时间使用可能会有一些物理空间无法及时释放,需要执行收缩数据库操作才能释放物理空间。需要关注日志文件大小及物理文件大小,发现文件膨胀迅速可以在业务低峰期收缩数据库。 数据库名长度不要超过64个字符,且数据库名当前仅支持数字、大小写字母、中划线(-)和下划线(_),不支持其他特殊字符。 建议修改默认端口。RDS for SQL Server默认端口为1433,公网上一些不安全的程序可能会扫描RDS for SQL Server的默认端口,建议修改默认端口。 推荐使用高可用主备实例。相比于单机实例,高可用实例可以极大提高生产业务的可用性和可靠性。 高可用实例请跨AZ部署,进行AZ级别的容灾。 建议长时间运行的实例在业务低峰期可以重启。实例长时间运行后可能会出现性能下降,推荐每三个月能够在业务低峰期重启一次实例。 设置最大并行度。最大并行度参数影响业务的CPU使用率。默认值为0允许Session使用所有CPU,可能由于某个SQL的问题导致CPU无法分配给其他Session使用。建议根据规格配置,如核数除以2。 临时库(TempDB)创建多个ndf辅助文件。 当执行操作出现权限问题时,请优先参考存储过程的使用,查找使用合适的存储过程。 如需修改SQL Server参数,请在控制台进行修改,不支持通过执行SQL命令方式修改。 备份恢复相关操作请通过管理控制台下发或调用RDS API接口、SDK接口下发,不能通过SSMS或执行SQL直接操作。迁移上云请参考 数据复制服务 (DRS)。 恢复数据到已有实例请谨慎操作,避免错误覆盖已有数据导致影响业务。建议使用恢复到新实例功能。 数据库恢复模式(Recovery model)不要设置为simple模式,建议使用full模式。 设置为simple模式将不会对该库执行增量备份,因此该库无法恢复到指定时间点。 对于主备实例或者集群实例,设置数据库恢复模式是simple模式后,会导致该库不会建立复制关系,进而无法操作主备切换或者规格变更。 因此,请谨慎使用simple模式。 不建议使用长事务或长时间未提交事务。长事务会长时间占用数据库的事务日志,造成事务日志膨胀并且无法阶段回收空间,最终导致磁盘满并造成大量锁等待,阻塞其他SQL执行。如果kill掉后会导致回滚时间更长,至少是事务执行的1.5倍,造成主备复制延迟增大,导致主备切换失败、主备的规格变更失败。
  • 字符集排序规则 表2 排序规则说明 排序规则选项 说明 区分大小写(_CS) 区分大写字母和小写字母。 如果指定此项,排序时小写字母将在其对应的大写字母之前。 如果未指定此选项,排序规则将不区分大小写。 即RDS for SQL Server 在排序时将大写字母和小写字母视为相同。 通过指定 _CI,可以显式选择不区分大小写。 区分重音(_AS) 区分重音字符和非重音字符。 例如,“a”和“ấ”为不同字符。 如果未指定此选项,则排序规则将不区分重音。 即RDS for SQL Server 在排序时将字母的重音形式和非重音形式视为相同。 通过指定 _AI,可以显式选择不区分重音。
  • 服务器级别排序规则 下表为部分操作系统(OS)区域设置确定的默认排序规则。 表4 操作系统排序规则 Windows区域设置 默认排序规则 南非荷兰语(南非) Latin1_General_CI_AS 阿尔萨斯语(法国) Latin1_General_CI_AS 巴斯克语(巴斯克) Latin1_General_CI_AS 波斯尼亚语(波斯尼亚和黑塞哥维那,拉丁语) Latin1_General_CI_AS 保加利亚语(保加利亚) Cyrillic_General_CI_AS 中文(澳门特别行政区) Latin1_General_CI_AI 中文(中华人民共和国) Chinese_PRC_CI_AS 荷兰语(荷兰) Latin1_General_CI_AS 英语(澳大利亚) Latin1_General_CI_AS 英语(印度) Latin1_General_CI_AS 英语(加拿大) Latin1_General_CI_AS 英语(新西兰) Latin1_General_CI_AS 英语(英国) Latin1_General_CI_AS 英语(美国) Latin1_General_CI_AS 菲律宾语(菲律宾) Latin1_General_CI_AS 意大利语(意大利) Latin1_General_CI_AS 泰语(泰国) Thai_CI_AS
  • 支持的实例字符集 RDS for SQL Server当前支持的实例字符集如表1所示: 表1 支持的实例字符集 实例字符集 说明 Chinese_PRC_90_CI_AI Chinese-PRC-90,不区分大小写、不区分重音(兼容SQL Server 2005)。 Chinese_PRC_CI_AI Chinese-PRC,不区分大小写、不区分重音。 Chinese_PRC_CI_AS Chinese-PRC,不区分大小写、区分重音。 Chinese_PRC_CS_AS Chinese-PRC,区分大小写、区分重音。 Cyrillic_General_CI_AS Cyrllic_General,不区分大小写,区分重音。 SQL_Latin1_General_CP1_CI_AS 对于Unicode 数据为 Latin1_General,不区分大小写,区分重音。 THAI_CI_AS THAI,不区分大小写、区分重音。
  • 解决方案 使用rdsuser账号手动授予新账号的msdb库的public权限。具体操作如下: 方式一: 使用SSMS工具,以rdsuser账号登录实例。 在新账号(newlogin)上右键单击,查看属性。 在“User Mapping”中勾选msdb库,查看下面勾选了public角色,单击“OK”。 图3 授予public权限 再次尝试使用新账号(newlogin)登录实例,则不会出现报错。 方式二: 使用DAS,以rdsuser账号登录实例。 执行以下SQL授予msdb库权限。SQL中待授权账号以newlogin为例。 USE [msdb] GO CREATE USER [newlogin] FOR LOG IN [newlogin] GO 再次尝试使用新账号(newlogin)登录实例,则不会出现报错。
  • 操作场景 tempdb是系统数据库,是一个全局资源,可供连接到SQL Server实例或SQL数据库的所有用户使用 。它是一个临时数据库,无法永久保存数据,作用是给实例中的各种请求处理中间数据,分为主数据文件(.mdf)、次要数据文件(.ndf)和日志文件(.ldf)。当服务重启的时候,tempdb会被重新创建。 tempdb数据库如果在设计上存在缺陷,会存在性能上的问题。尤其是tempdb数据库在一些高并发的场景,如果应用频繁地创建和销毁临时表,会导致实例卡顿从而影响业务。 微软官方建议将临时数据库的文件拆分成多个,一般与逻辑CPU个数相同,超过8个则使用8个数据文件,解决闩锁争用问题每次额外加4个文件。 更多介绍请参见tempdb数据库官方文档。