• [技术干货] 快速了解 SQL Server 2017
    本帖最后由 jimmy 于 2017-11-14 22:42 编辑首先一张图带大家了解一下 SQL Server 的的市场地位这个是 SQL Server 2017 workshop 微软官方的演示图概括如下1. 基于 Gartner 魔力四象限图,行业地位稳居Top 3,在领导力方面超越 Oracle 现居第一2. 连续七年被美国国家标准与技术研究所 NIST 评为漏洞最少的数据库3. 业界领先的 OLTP, OLAP 性能表现,留下许多性能记录4. 商业数据库中提供最优秀性价比5. 集成机器内置学习服务 4790 简而言之,要性能有性能,要性价比有性价比,要地位有地位,要安全又安全,就问你用不用。 言归正传,2017年10月2日,微软正式商用 SQL Server 2017 for Linux,算是一个里程碑意义的产品,微软终于甩掉了这么多年的 Windows 包袱,投入到了开源大家庭的怀抱。 那么什么是 SQL Server 2017 for Linux?带大家看一下下面的 SQL Server 架构图 4791 简单来说,数据库引擎位于一个叫做 SQL PAL 的一个抽象层的上面,这个抽象层就是以前的 SQL OS 层,微软只是实现了 Linux Host 扩展这一部分,就实现了 SQL Server for Linux。再说通俗点,SQL Server for Linux 跟 SQL Server for Windows 是一套内核。所以期待 SQL Serverfor Linux 在性能上有所提升的同学们,你们可以散了。 那么SQL Server for Linux 有什么现实意义呢?1. 讨厌Windows 的同学可以有更多的选择了,目前支持 Redhat,SUSE,Ubuntu2. 可以部署Docker 了 下面是一个简单的基于容器的 CI/CD4792 SQLServer 2017 给我们带来了什么新鲜的东西? 1. 图数据库,带来了全新的语法支持4793 图数据库可以将复杂的关系,简单化,降低开发难度,减少代码量,便于后期维护,但是!!!!在优化器端,这个图数据库本身没有做任何优化,引擎需要将新引入的语法转化为传统的语法然后再执行,所以就效率而言对于传统的语法格式,只慢不快。 2. 自适应查询4794 统计情报不准确,往往会带来 SQL 语句性能的严重下降,而这种统计情报的不准确性,在有些场景是不可避免的。针对这类统计情报不准确导致的性能下降问题,微软引入了自适应查询功能。简单来说就是SQL 跑起来了发现被忽悠了,基于错误的统计情报导出的执行计划太不合理,跑死都跑不完,优化器一拍脑袋,换执行计划….这套方案让优化器可以在实际数据跟现存统计情报出现严重偏差的时候让 SQL 不至于出现严重性能下降。 3. 机器学习服务4795 这个一句话概括下来就是 SQL Server 原生支持 R 和 Python 语言,除此之外别无其他 4. 可恢复在线重建索引4796 简单来说,rebuildindex 语句可以做断点续传,在暂停状态下,SQL Server 会同时维护现有和新建的索引,当重新执行 rebuild index 语法的时候, SQL Server 会从上次暂停的位置继续执行,对于大型索引重建来说这个功能非常给力。但是,敲黑板!!! 这个功能只支持rebuild 语法, 对于create 语法暂时不支持。另外,暂停状态下,如果对索引或者依存的表发行 DDL 语句,索引重建操作不可恢复。 以上:)
  • SQL Server 首次登陆 Linux 平台
    近日,微软 SQL Server 最近达成一个新的里程碑,最新版SQL Server 2017 除了支持 Windows 平台,将首次登陆 Linux 平台,并且还支持 Docker。此举让用户(特别是企业用户)有了更多选择。2016 年 6 月份,微软就提前预告 SQL Server 将支持 Linux 平台近年来, SQL Server 正在一直演化,除了想一改 DMS(数据库管理系统)的角色,还想介入到数据分析、机器学习和数据科学领域。2017 年 4 月份, SQL Server 发布了一个重要组件,支持在 SQL Server 中用 Python 运行机器学习负载。借助这个特性,数据科学家直接操作处理储存在 SQL Server 的数据,不用数据迁移了。机器学习/数据科学领域内的另一种编程语言 R,SQL Server 在去年就整合了。更多细节,见 SQL Server 官方:https://www.microsoft.com/en-us/sql-server/sql-server-2017参考:VentureBeta、SQL Server
  • [技术干货] 跟我一起学 MS SQL Server (二) -- 了解数据库状态
    本帖最后由 jimmy 于 2017-9-21 19:18 编辑数据库状态 数据库总是处于一个特定的状态中,例如,这些状态包括 ONLINE、OFFLINE 或 SUSPECT。若要确认数据库的当前状态,请选择 sys.databases 目录视图中的 state_desc 列或 DATABASEPROPERTYEX 函数中的 Status 属性。 状态 定义 ONLINE 可以对数据库进行访问。即使可能尚未完成恢复的撤消阶段,主文件组仍处于在线状态。 OFFLINE 数据库无法使用。数据库由于显式的用户操作而处于离线状态,并保持离线状态直至执行了其他的用户操作。 例如,可能会让数据库离线以便将文件移至新的磁盘。然后,在完成移动操作后,使数据库恢复到在线状态。RESTORING 正在还原主文件组的一个或多个文件,或正在脱机还原一个或多个辅助文件。数据库不可用。RECOVERING 正在恢复数据库。恢复进程是一个暂时性状态,恢复成功后数据库将自动处于在线状态。如果恢复失败,数据库将处于可疑 状态。数据库不可用。RECOVERY PENDING SQL Server 在恢复过程中遇到了与资源相关的错误。数据库未损坏,但是可能缺少文件,或系统资源限制可能导致无法启 动数据库。数据库不可用。需要用户另外执行操作来解决问题,并让恢复进程完成。 SUSPECT 至少主文件组可疑或可能已损坏。在 SQL Server 启动过程中无法恢复数据库。数据库不可用。需要用户另外执行操作来 解决问题。EMERGENCY 用户更改了数据库,并将其状态设置为 EMERGENCY。数据库处于单用户模式,可以修复或还原。数据库标记为 READ_ONLY,禁用日志记录,并且仅限 sysadmin 固定服务器角色的成员访问。EMERGENCY 主要用于故障排除。例如, 可以将标记为“可疑”的数据库设置为 EMERGENCY 状态。这样可以允许系统管理员对数据库进行只读访问。只有 sysadmin 固定服务器角色的成员才可以将数据库设置为 EMERGENCY 状态。 数据库文件状态 在 SQL Server 中,数据库文件的状态独立于数据库的状态。文件始终处于一个特定状态,例如 ONLINE 或 OFFLINE。若要查看 文件的当前状态,请使用 sys.master_files 或 sys.database_files 目录视图。如果数据库处于离线状态,则可以从 sys.master_files 目录视图中查看文件的状态。 状态 定义ONLINE 文件可用于所有操作。如果数据库本身处于在线状态,则主文件组中的文件始终处于在线状态。如果主文件组中的文件 处于离线状态,则数据库将处于离线状态,并且辅助文件的状态未定义。 OFFLINE 文件不可访问,并且可能不显示在磁盘中。文件通过显式用户操作变为离线,并在执行其他用户操作之前保持离线状态。 注意 当文件已损坏时,该文件仅应设置为离线,但可以进行还原。设置为离线的文件只能通过从备份还原才能设置为在线。RESTORING 正在还原文件。文件处于还原状态(因为还原命令会影响整个文件,而不仅是页还原),并且在还原完成及文件恢复之前, 一直保持此状态。RECOVERY PENDING 文件恢复被推迟。由于在段落还原过程中未还原和恢复文件,因此文件将自动进入此状态。需要用户执行其他操作来解决 该错误,并允许完成恢复过程。SUSPECT 联机还原过程中,恢复文件失败。如果文件位于主文件组,则数据库还将标记为可疑。否则,仅文件处于可疑状态,而 数据库仍处于在线状态。在通过以下方法之一将文件变为可用之前,该文件将保持可疑状态: 1. 还原和恢复 2. 包含 REPAIR_ALLOW_DATA_LOSS 的 BCC CHECKDB DEFUNCT 当文件不处于在线状态时被删除。删除离线文件组后,文件组中的所有文件都将失效。
  • [技术干货] 跟我一起学 MS SQL Server (一)
    本帖最后由 jimmy 于 2017-9-1 17:42 编辑关于 Microsoft SQL Server Microsoft SQL Server 是由美国微软公司所推出的关系数据库解决方案,最新的版本是 SQL Server 2016, 已经在 2016 年 6 月 1 日发布。数据库的内置语言原本是采用美国标准局(ANSI)和国际标准组织(ISO)所定义的 SQL 语言,但是微软公司对它进行了部分扩充而成为作业用 SQL(Transact-SQL)。 几个初始版本适用于中小企业的数据库管理,但是近年来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理。 [table=98%,silver] 版本号年份发布名称代号1.0 (OS/2)1999SQL Server 1.0-4.211993SQL Server 4.21-6.01995SQL Server 6.0SQL956.51996SQL Server 6.5Hydra7.01998SQL Server 7.0Sphinx-1999SQL Server 7.0 OLAP工具Plato8.02000SQL Server 2000Shiloh8.02003SQL Server 2000 64-bit版本Liberty9.02005SQL Server 2005Yukon10.02008SQL Server 2008Katmai10.252009SQL AzureCloudDatabase10.502010SQL Server 2008 R2Kilimanjaro(aka KJ)11.02012SQL Server 2012Denali12.02014SQL Server 2014-13.02016SQL Server 2016-数据库服务的启动 [table=98%,lightblue] 通过服务启动我的电脑 -》 管理 -》 服务 -》 SQLServer -》 启动通过 SQLServer 配置管理器启动开始 -》 所有程序 -》 SQLServer -》 配置工具 -》 SQLServer 配置管理器 -》 启动通过命令行启动命令行执行 net start mssqlserv数据库结构 物理结构 [table=98%,lightblue] 主数据文件xxx.mdf包含数据库启动信息,存储一部分数据,一个数据库只能有一个主数据文件辅助数据文件xxx.ndf用来存储组数据文件未能存储的数据和一些数据对象日志文件xxx.ldf存储数据库更新的日志信息文件组逻辑概念,没有具体文件将文件分组,类似于文件夹的存在,默认只存在一个 Primary 文件组逻辑结构[table=98%,lightblue] 表视图索引存储过程 etc数据库命名规则 [table=98%,lightblue] 第一个字符必须是字母或"_"、"@"、"#"不能使用 T-SQL 的保留字不允许嵌入空格或者其他特殊字符数据库分类 [table=98%,lightblue] 系统数据库 (可以理解为用户数据库的数据库)[table=98%,seagreen]master记录 SQLServer 当中系统级别的信息 登录账户 系统配置 数据库文件的存放位置等model模板数据库msdbSQLServer 的代理作业,备份还原信息tempdb临时数据库,存储临时表,临时存储过程resource隐藏并且只读的数据库 包含了 SQLServer 当中所有的系统对象的物理结构信息 这些系统对象的逻辑信息包含在各个数据库的 sys 架构下面用户数据库用户自己创建的数据库创建数据库时需要指定的属性 [table=98%,lightblue] 文件名称存放位置分配的初始空间 (最小 3 MB)属于哪个文件组文件增长 (可按大小或者百分比指定增长速度)文件容量设置 (可以指定最大值或者不受限)兼容级别 (新版本向下兼容可以指定到具体的兼容版本)访问限制 (多用户,单用户,特定用户)可读写属性 (默认可读写,可以改为只读)数据库的创建方法 命令行创建数据库范例 [code] USE master -- 指向当前所操作数据库 GO CREATE DATABASE TEST -- 数据库名称 TEST ON PRIMARY -- 主文件组 ( NAME=′Test_Data′, -- 主文件逻辑名 FILENAME=′E:\test\Test_Data.mdf′, -- 主文件物理名 SIZE=5MB, -- 主文件初始大小 MAXSIZE=100MB, -- 主文件的增长最大值 FILEGROUWTH=15% -- 主文件增长率 ), -- 第一个数据文件结束 FILEGROUP FG -- 第二个文件组 ( NAME=′FG_Test_Data′, -- 主文件逻辑名 FILENAME=′E:\test\FG_Test_Data.ndf′, -- 主文件物理名 SIZE=5MB, -- 主文件初始大小 MAXSIZE=100MB, -- 主文件的增长最大值 FILEGROUWTH=15% -- 主文件增长率 ), LOG ON ( NAME=′Test_Log1′, -- 日志文件逻辑名 FILENAME=′E:\test\Test_Log1.ldf′, -- 日志文件物理名 SIZE=5MB, -- 日志文件初始大小 FILEGROUWTH=0 -- 未启用自动增长 ), -- 日志 2 的具体描述 ( NAME=′Test_Log2′, -- 日志文件逻辑名 FILENAME=′E:\test\Test_Log2.ldf′, -- 日志文件物理名 SIZE=5MB, -- 日志文件初始大小 FILEGROUWTH=0 -- 未启用自动增长 ) GO [/code] 数据库的删除方法 命令行删除数据库范例 [code] USE master GO IF EXISTS(SELECT * FROM sysdatabases WHERE name = ´TEST´) DROP DATABASE TEST GO[/code]
总条数:109 到第
上滑加载中