首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server的隐藏功能

SQL Server有许多隐藏功能和强大的功能。以下是一些例子:

数据类型

  1. JSON 数组(JSON Array):JSON(JavaScript Object Notation)数组是一个嵌套的序列化数据结构。可以使用 OPENJSON 函数对 JSON 数组进行查询。

例如:

查询一个名为 orders 的表,返回其 JSON 数组的第三项:

代码语言:sql
复制
SELECT OPENJSON(orders) AS data
, items->>'order_id' AS order_id
, items->>'order_status' AS order_status
, items->>'order_total' AS order_total
FROM orders
WHERE 1 = 1;
  1. 二进制数据类型(Binary Data Types)ImageVarBinary 允许存储二进制信息。

例如:

查询一个名为 images 的表,返回第一列的所有行的二进制数据,类型为 IMAGE/JPEG,第二列的值表示长度,使用 CAST 进行类型转换:

代码语言:sql
复制
SELECT CAST(IMAGESTREAM ->>0 AS IMAGE) AS image
, IMAGESTREAM ->>0 AS image_length
FROM images
WHERE 1 = 1;
  1. 数据压缩(Data Compression)ROW\_SIZE 可用于控制行记录的最大长度,以提高查询效率。此外, COMPRESSED_INDEXIN\_ROW\_COMPRESSION 可以将存储的数据行压缩。

例如:

执行一个查询并返回所有列中最长的 SQL 结果集,然后使用 UNPIVOT 将结果行分组,只选择 row_idrow_value:

代码语言:sql
复制
SELECT UNPIVOT(MAX(DISTINCT row_value) FOR row_num IN (MAX(idx), SUM(val)) FOR idx IN (row_id, row\_value)) AS data
INTO #maxresults
FROM table_name AS base_table
WITH (MAXRECURSION 1000);

SELECT * FROM #maxresults;
  1. XML 数据支持:SQL Server 使用 OPENXMLFOR XML 结构化查询语法来处理 XML 数据,可以方便地导入和导出 XML 文件。

例如:

导出整个 dbo.users 表的对象(表、视图、存储过程等)及其元数据:

代码语言:sql
复制
SELECT  
    name AS [@name],
    schema\_name(schema\_id) AS SchemaName,
    type_desc AS Type,
    modify\_time AS ModifyTime,
    modify\_by AS ModifyBy,
    modify\_by\_property AS ModifyByProperty
FROM
    user\_objects
WHERE
    type = 'U' AND is\_ms\_shipped = 0
FOR XML PATH('').NODE();

触发器(Triggers)

  1. 视图事件触发器(View Event Triggers):可以基于其他视图创建触发器,在数据库发生更改时执行相应的操作。

例如:

在一个名为 orders 的表中创建一个名为 check\_vat 的视图事件触发器,检查 country 列值是否属于 24 个 VAT(Value Added Tax, 增值税)国家之一,并记录所有错误情况:

代码语言:sql
复制
CREATE VIEW check_vat AS
SELECT
    country
FROM
    orders;
GO

CREATE TRIGGER check_vat_trigger
ON check_vat
AFTER INSERT, UPDATE, DELETE AS
BEGIN
    IF EXISTS (SELECT * FROM Deleted)
    BEGIN
        RAISERROR('VAT not allowed for this country.', 16, 1);
    END;
    ELSE
    BEGIN
        NULL;
    END;
END;

GO

由于触发器不能直接查看,所以需要使用 sys.sql\_modules 中的 "definition""object\_id" 属性来判断触发器是否存在。

功能特性

  1. 加密/解密功能:SQL Server 支持数据库层加密,数据传输层加密等,以保护数据完整性。可以在 T-SQL 指令中使用 DECRYPTIONDECRYPTION 语句对数据进行加密和解密。
  2. 数据库版本跟踪与更新:SQL Server 使用 ALTER EDITION 语句来更新 SQL Server 版本,使数据库升级更加便捷。

例如:

my\_database 数据库升级为 SQL Server 2022 中的最新版本:

代码语言:sql
复制
ALTER DATABASE my_database
SET EDITION = 'Enterprise,Express,Advanced,Business Intelligence';
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL SERVER 压缩功能

大家好,又见面了,我是你们朋友全栈君。 SQL SERVER 2008 及以上提供数据库表压缩功能 1....压缩分类和比率   压缩分为行(ROW)压缩和页(PAGE)压缩,页压缩压缩比率更高一些,正常来说一般数据库可以实现50%以上压缩比率。...2.对性能影响   压缩后对磁盘压力会减少,但是会增加CPU压力,对性能影响需要看机器具体配置,在实际中情况中,经常是CPU没满但是磁盘已满负荷了。...以下代码生成全库压缩脚本,注意只是生成脚本,将生成脚本贴到SQL执行窗口中执行即可。.../*SQL Server 2008 以上,自动进行表压缩 直接运行生成脚本文件即可 */ SET NOCOUNT ON CREATE TABLE #Temp ( table_name NVARCHAR

55010

sql server索引功能资料

大家好,又见面了,我是全栈君 无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间推移,这些修改可能会导致索引中信息分散在数据库中(含有碎片)。...当索引包含页中逻辑排序(基于键值)与数据文件中物理排序不匹配时,就存在碎片。碎片非常多索引可能会降低查询性能,导致应用程序响应缓慢。下面是一些简单查询索引sql。...如果还有可用磁盘空间,将删除此压缩过程中生成所有空页。压缩基于 sys.indexes 目录视图中填充因子值。 重新组织进程使用最少系统资源。而且,重新组织是自动联机执行。...如果指定 ALL,将重新组织与指定表或视图相关联所有索引,并压缩与聚集索引、基础表或带有包含列非聚集索引相关联所有 LOB 列。...重新组织表中所有索引 在“对象资源管理器”中,展开包含您要重新组织索引数据库。 “表”文件夹。 展开要为其重新组织索引表。

58720
  • SQL Server 数据加密功能解析

    SQL Server数据加密相较于其他数据库,功能相对完善,加密方法较多。通常来讲,数据加密分为对称加密和非对称加密。对称加密:加密与解密使用同一密钥,密钥需要传输,安全性较弱,但性能较非对称要好。...同样,SQL Server 就使用了折中方法,所以SQL Server 加密功能包含2个部分:数据加密和密钥管理 一.数据加密 说道数据加密,我们不得不说下加密算法,SQL Server支持多种加密算法...: 二.密钥管理 1.SQL Server加密层次结构 由图可以看出,加密是分层级。...EKM模块,这个比较特别,全称可扩展密钥管理模块,该功能增强sqlserver密钥管理能力,允许将密钥存储到数据库之外,包括一些硬件,如智能卡、USB设备或硬件安全模块(HSM);并且允许使用第三方产品来管理密钥和进行加密...2.SQL Server加密方式 对象定义加密 未保证触发器、存储过程、视图等定义信息,我们可以在定义sqlserver对象时候添加WITH ENCRYPTION字段来加密对象。

    5K11

    sql server中部分函数功能详解

    SQL Server 语法: SELECT TOP number|percent column_name(s) FROM table_name 2.’%%’查询 我们希望从上面的 "Persons"...14. cast() Cast()函数是转换数据类型 CAST 和 CONVERT (Transact-SQL),将一种数据类型表达式转换为另一种数据类型表达式 Transact-SQL 语法约定...这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型详细信息,请参阅数据类型 (Transact-SQL)。...SQL CHARINDEX函数返回一个整数,返回整数是要找字符串在被找字符串中位置 select substring('123,456',charindex(',','123,456') ,len...Server REPLACE函数使用 REPLACE 用第三个表达式替换第一个字符串表达式中出现所有第二个给定字符串表达式。

    1.5K30

    主题隐藏功能

    暗夜模式 配置位置:基本配置 -> 暗夜模式 寒山主题重磅功能:暗夜模式 网页太亮,晚上看着伤眼睛怎么办,暗夜模式来帮你。什么?在哪里开启,客官稍等,下面就是见证奇迹时刻。 ?...文章页面 文章页目录和阅读进度 配置位置:文章配置 -> 目录和文章配置 -> 进度条 如果想要开启目录,让读者快速索引,可以开启下面的目录功能。 同时,支持阅读进度条展示。 ?...不喜欢可以开启这个功能。 ? 高级功能 配置位置:文章配置 -> Mathjax 主题支持 数学公式 和 mermaid。 ? 主题还有其他功能,大家可以在继续探索,谢谢大家观看和使用。...主题左下角播放器 这个功能目前支持,但是在 Halo 1.3.x之后版本体验会更好,因为 寒山 主题基于 Halo 1.3.x 版本开发了 pjax, 体验会更好 ?...随机图片实现 由于之前版本随机图片功能,一直是一个软肋,实现得都不是怎么好。然后halo作者给了一个很好建议,然后我试了一下,确实很好。 首先,你需要在静态存储这里新建上传静态文件。 ?

    78830

    sql server实现自定义分割月功能

    本文目录列表: 1、为何出现自定义分割月需求 2、sql server实现自定义分割月功能 3、测试验证效果 4、总结语 5、参考清单列表 1、为何出现自定义分割月需求 今天梳理一个平台所有函数时,...我仔细梳理了这个函数进行了重构简化以及扩展,该自定义分割月函数实现区别之前写SQL Server时间粒度系列----第3节旬、月时间粒度详解文章中将一个整数值和月份日期相互转换功能,这个是按照标准月来实现...2、sql server实现自定义分割月功能 自定义分割月功能函数包括两个标量函数:ufn_SegMonths和ufn_SegMonth2Date。...注意:以上测试代码使用了SQL Server数字辅助表实现这边文章内联表值函数ufn_GetNums。 4、总结语 这次是梳理平台功能性函数所进行重构简化以及扩展实现。...继续精进SQL Server,继续进发。 5、参考清单列表 SQL Server数字辅助表实现 SQL Server时间粒度系列----第3节旬、月时间粒度详解

    1.1K60

    sql server 与mysql区别_sql server优缺点

    MySQL支持enum,和set类型,SQL Server不支持 MySQL不支持nchar,nvarchar,ntext类型 MySQL递增语句是AUTO_INCREMENT,而MS SQL...,那么比不支持无符号型MS SQL就能多出一倍最大数 存储 MySQL不支持在MS SQL里面使用非常方便varchar(max)类型,这个类型在MS SQL里 面既可做一般数据存储,也可以做...MySQL存储过程只是出现在最新版本中,稳定性和性能可能不如MS SQL。 同样负载压力,MySQL要消耗更少CPU和内存,MS SQL的确是很耗资源。...不能放在子查询内,limit不同与SQLServer,它可 以规定范围 limit a,b——范围a-b SQL SERVER : select top 8 * from table1 MYSQL: select...41. (19) MySQL视图FROM子句不允许存在子查询,因此对于SQL Server中FROM 子句带有子查询视图,需要手工进行迁移。

    2.3K20

    SQL Server 2012 12个激动人心功能

    微软已经发布了众所期待 SQL Server 2012,让我们来看看这个新版给我们带来了什么激动人心功能吧。 1. AlwaysOn - 这个功能将数据库镜像提到了一个新高度。...它资源占用更少,更安全,支持 SQL Server 2012。 3. Columnstore 索引 - 这是 SQL Server 独有的功能。它们是为数据仓库查询设计只读索引。...增强审计功能 - 现在所有的 SQL Server 版本都支持审计。用户可以自定义审计规则,记录一些自定义时间和日志。 6. ...这是一种支持 SQL Server 所有 BI 体验混合数据模型。 7. Sequence Objects - 用 Oracle 的人一直想要这个功能。...不同SQL Server 企业版自带了这个功能,而用 Oracle 的话,你还得额外购买这个功能。这个功能可以让你记录生产环境工作状况,然后在另外一个环境重现这些工作状况。 10.

    64440

    SQL Server 2012学习笔记 (三) ----- SQL Server SQL语句

    ——INSERT 数据更改——UPDATE 数据删除——DELETE 数据查询——SELECT   查询是SQL语言中心内容,而用于表示SQL查询SELECT语句,是SQL语句中功能最强大也是最复杂语句...、流程控制语句 BEGIN…END语句 IF…ELSE语句 CASE语句 WHILE语句 GOTO语句 WAITFOR语句 RETURN语句 6、批处理语句   批处理是从应用程序发送到SQL...Server并得以执行一条或多条T-SQL语句。...某些特殊SQL指令不能和别的SQL语句共存在一个批处理中,如CREATE TABLE和CREATE VIEW语句。这些语句只能独自存在于一个单独存储过程中。   ...GO本身不是T-SQL组成部分,只是一个用于表示批处理结束前端指令。

    6.4K20

    Sql Server 分区sql

    / --新建一个简单分区函数,该函数以1000为界分两个区 create partition function test_partition(int) AS RANGE LEFT FOR VALUES...WHERE name = N'test_scheme') DROP PARTITION SCHEME test_scheme GO --创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分区需要放在哪一个文件组上...name varchar(10) not null, class int not null, grade int ) on test_scheme(class) --在此处指定该表要使用分区方案...,10,100); -- 这条数据在A分区上 insert into student values ('AQU_边界',1000,89); -- 这边数据也在A分区上是个边界,因为我们上面在函数中指定是...$partition.分区函数(分区列)可以返回某一行所在分区序号 select *,分区序号 = $partition.test_partition(class) from student GO</

    3.3K30

    SQL Server安全(111):SQL Server安全概述

    在保密你服务器和数据,防备当前复杂攻击,SQL Server有你需要一切。但在你能有效使用这些安全功能前,你需要理解你面对威胁和一些基本安全概念。...这篇文章提供了基础,因此你可以对SQL Server安全功能充分利用,不用在面对特定威胁,不能保护你数据功能上浪费时间。...但我也会谈论只在SQL Server 2012和后续版本里才有的功能。 在保密你服务器和数据,防备当前复杂攻击,SQL Server有你需要一切。...这篇文章提供了基础,因此你可以对SQL Server安全功能充分利用,不用在面对特定威胁,不能保护你数据功能上浪费时间。...插图1.2:在对象浏览器里,在服务器和数据库级别的安全对象 你会在SSMS和它各个窗体里找到各种隐藏安全功能,因此你可以好好点开这些安全性节点。

    2.4K80

    SQL Server 2016 列存储索引功能增强「建议收藏」

    列存储索引(columnstore index)在SQL Server 2012中已经引入,其带来性能提升同时也有很多限制,比如对带有列存储索引表进行INSERT, UPDATE和DELETE时,会遇到如下错误提示...: 由于这种限制,索引列存储索引并不太适合在SQL Server 2012 OLTP DB中应用。...不过,SQL Server 2016对列存储索引做了很多改进,其中我觉得最大变化是可更新列存储索引,即可以直接对带有列存储索引表进行INSERT, UPDATE和DELETE,因此,我们可以在SQL...Server 2016环境中尝试应用这以功能,已提升查询性能。...在SQL 2016环境测试过程中,我发现列存储索引对于有聚集函数T-SQL,有很好性能提升,比如下面这个示例,性能提升约15倍: JOIT表有1500833笔记录,复制一份到JOIT_CSI表,2

    52110

    SQL Server 复制进阶:Level 1 - SQL Server 复制

    n \ 功能:名词 日期:14世纪 复制这个词来自拉丁词replicare意思是重复。复制描述了复制或复制过程(www.merriam-webster.com)。...文章 对于每个应该复制SQL Server对象,需要定义一个复制项目。 每篇文章对应于单个SQL Server对象或对象子集。 最经常复制对象是表,视图和存储过程。...分发者可以是单独SQL Server实例,但分发服务通常与发布者在同一台计算机上运行。 订户 订户是通过订阅接收所有已发布信息SQL Server实例。 订阅 订阅是该出版物副本。...这里显示示例屏幕截图是在安装了SQL Server实例(R2A)单台服务器(WIN2008A)上进行。这个实例是一个SQL-Server 2008R2实例。...通过打开SSMS并连接到将包含您复制源数据SQL-Server实例开始。

    2.8K40

    SQL Server 2012学习笔记 (七) ------ SQL Server 游标

    SQL Server提供了4种类型游标: 1. 静态游标   静态游标的完整结果集在游标打开时建立在tempdb中。静态游标总是按照游标打开时原样显示结果集。...键集驱动游标介于二者之间,它能检测到大部分变化,但比动态游标消耗更少资源。 2.动态游标   动态游标与静态游标相对。当滚动游标时,动态游标反映结果集中所做所有更改。...对所有由当前用户发出或由其他用户提交、并影响结果集中INSERT、UPDATE和DELETE语句,其效果在这些行从游标中提取时是可见。...4.键集驱动游标   打开游标时,键集驱动游标中成员和行顺序是固定。键集驱动游标由一套被称为键集惟一标识符(键)控制。键由以惟一方式在结果集中标识行列构成。...对非键集列中数据值所做更改(由游标所有者更改或其他用户提交)在用户滚动游标时是可见。在游标外对数据库所做插入在游标内是不可见,除非关闭并重新打开游标。

    2K50

    SQL Server 2012学习笔记 (二) ----- SQL Server Transact-SQL

    1、什么是Transact-SQL?   T-SQL(Transact Structured Query Language)是标准Microsoft SQL Server 扩展。...是标准SQL程序设计语言增强版,是用来让程序与SQL Server 沟通主要语言。...为了在内存存储信息,用户必须指定存储信息单元,并为该存储单元命名,以方便获取信息,这就是变量功能。Transact-SQL可以使用两种变量,一种是局部变量,另外一种是全局变量。...(8)RESTORE命令:用来将数据库或其事务处理日志备份文件由存储介质还原到SQL Server系统中。   (9)SELECT语句除了有强大查询功能外,还可用于给变量赋值。   ...(10)SET命令:用于给局部变量赋值和用于执行SQL命令时SQL Server处理选项设定。   (11)SHUTDOWN命令:用于立即停止SQL Server执行。

    2.6K30
    领券