22. SQL -- SQL Server 2005 和SQL Server 2008新特性

  • SQL SERVER 2005 与SQL SERVER 2008 新特性

 

SQLSERVER 2005 新特性

Enhanced Data Types:存储最大8K-2G

Partitioned Table(分区表):数据拆分管理

背景:一个公司,有目前现存数据以及历史数据,各在一台SER 上,服务器访问方式:

SQL 2000

TABLE 1:在一张table 中,对数据进行分区

Enhanced Indexing Features

SER 1 SER 2

现存数据 TABLE 1 TABLE 1 历史数据

分区视图 对2 个table 进行链接

CLIENT

CLIENT 访问的是分区视图

Use the OUTPUT Keyword

Storing XML in the Database

The Common Language Runtime

The Database Engine

SQL Server 2005 CLR Integration

SQL Server Projects in Visual Studio 2005

Notification Services

Notification Services Architecture

An Adventure Works Notification Services Application

Service Broker

Reporting Services

Analysis Services

Snapshot Isolation Level

SQLiMail

SQL 2008 新特性

1)、设置状态栏颜色

2)、活动监视 DB 实例 → 右键 → 活动监视

3)、对象资源管理器详细信息 视图 →对象资源管理器详细信息

4)、数据库对象搜索 视图 → 对象资源管理器详细信息 → DB → 插索

5)、智能感知 在输入语句时,会智能感知函数、对象等信息

6)、T-SQL 调试

7)、多服务器查询

8)、加密

加密方式:透明数据加密 备份加密 HASH 加密 用密加密数据

创建对称密钥加密据

用证书加密数据

A、透明数据加密: 整个数据库可以通过SQL 引擎加密。该方式加密了所有数据库的数据和数据库的日志文件。通过使用这个包罗万象的方式,所有的索引和表都是加密的。不必更改你的应用程序。

加密步骤:

(1)、查看master 数据库是否被加密SELECT name,is_master_key_encrypted_by_server FROM sys.databases;

(2)、在主数据库中创建一个主密钥

--创建master 数据库下的主数据库密钥

CREATE MASTER KEY ENCRYPTION BYPASSWORD = N‘passw0rd‘;

/*

RESTORE SERVICE MASTER KEYFROMFILE = ‘c:\SqlBackup\SMK.bak‘

DECRYPTION BY PASSWORD =‘passw0rd‘

go

--重新生成数据库主密钥

ALTER MASTER KEY[FORCE]REGENERATE WITH ENCRYPTION BY

PASSWORD = ‘password‘

--删除数据库主密钥

GO

DROP MASTER KEY

*/

(3)、查看master 数据库下的密钥信息

SELECT * FROM sys.symmetric_keys;

(4)、创建证书用来保护数据库加密密钥(DEK)

CREATE CERTIFICATEmaster_server_cert WITH SUBJECT = N‘Master Protect DEK

Certificate‘;

(5)、创建测试数据库

IF DB_ID(‘db_encryption_test‘) ISNOT NULL

DROP DATABASE db_encryption_test

go

CREATE DATABASEdb_encryption_test;

--创建由master_server_cert 保护的DEK 数据库加密密钥(对称密钥)

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATEmaster_server_cert;

GO

--系统提示你,立刻备份证书;这里备份证书。

USE master;

BACKUP CERTIFICATEmaster_server_cert TO FILE = ‘c:\master_server_cert.cer‘

--不要保存在根目录,不然报错

WITH PRIVATE KEY (

FILE =‘c:\master_server_cert.pvk‘ , --不要保存在根目录,不然报错

ENCRYPTION BY PASSWORD =‘passw0rd‘ );

--相应的,我们也备份一下数据库主密钥(master)

USE master;

--如果没有启用主密钥的自动解密功能

--OPEN MASTER KEY DECRYPTION BYPASSWORD = ‘passw0rd‘;

BACKUP MASTER KEY TO FILE =‘c:\master.cer‘ --不要保存在根目录,不然报错

ENCRYPTION BY PASSWORD =‘passw0rd‘;

GO

--生产环境下,设置成单用户在运行加密

ALTER DATABASE db_encryption_testSET SINGLE_USER WITH ROLLBACK

IMMEDIATE;

GO

--备份成功以后,开启TDE 加密

ALTER DATABASE db_encryption_testSET ENCRYPTION ON;

GO

--设置多用户访问

ALTER DATABASE db_encryption_testSET MULTI_USER WITH ROLLBACK

IMMEDIATE;

GO

--查看db_encryption_test 数据库是否被加密 encryption_state:3 TDE加密了,2 正在加密

SELECTDB_NAME(database_id),encryption_state FROM sys.dm_database_encryption_keys;

/*

发现tempdb 也被加密了。MSDN 解释是:如果实例中有一个数据库启用了TDE加密,那么tempdb 也被加密

*/

--接下来,找另外一台机器或者实例来测试,如果数据文件被盗走了,防止附加的测试.

USE master;

EXEC sp_detach_dbN‘db_encryption_test‘;

GO

B、备份加密: SQL Server 2008 加密备份的方式可以防止数据泄漏和被窜改。另外,备份的恢复可以限于特点的用户。

CHASH 加密:SQL SERVER 允许5 种不同的哈希算法SHA、SHA1、MD2、MD4、MD5,哈希算法对大小写敏感

declare @hash varchar(100)

select @hash=‘encryption text‘

--SHA

select HASHBYTES(‘SHA‘,@hash)

--SHA1

select HASHBYTES (‘SHA1‘, @hash)

--MD2

select HASHBYTES (‘MD2‘, @hash)

--MD4

select HASHBYTES (‘MD4‘, @hash)

--MD5

select HASHBYTES (‘MD5‘, @hash)

D、用密码加密数据:

declare @encryptedtextvarbinary(80)

select @encryptedtext=ENCRYPTBYPASSPHRASE(‘passw0rd‘,‘encryptiontext‘)

[email protected],CAST(DECRYPTBYPASSPHRASE(‘password‘,@encryptedtext)

as varchar(max))

[email protected],CAST(DECRYPTBYPASSPHRASE(‘passw0rd‘,@encryptedtext)

as varchar(max))

E、创建对称密钥来加密数据:

use AdventureWorks --打开数据库

go

--1、建立对称密钥匙

CREATE SYMMETRIC KEYtestsymmterickey with algorithm =RC4

encryption by password=‘passw0rd‘

select * from sys.symmetric_keys

--2、打开对称密钥

open symmetric key testsymmterickey

decryption by password=‘passw0rd‘

--3、查看用对称密钥匙加密的数据

declare @encryptedtextvarbinary(80)

select

@encryptedtext=ENCRYPTBYKEY(KEY_GUID(‘testsymmterickey‘),‘encryptedtext‘)

[email protected],CAST(DECRYPTBYKEY(@encryptedtext) as varchar(30))

--4、关闭对称密钥

close symmetric keytestsymmterickey

F、用证书加密数据

--1、创建测试表及增加登录用户

create table certest (id intidentity(1,1) primary key,

salesrep varchar(30) not null,

saleslead varbinary(500) notnull)

go

create user salesrep1 withoutlogin

go

create user salesrep2 withoutlogin

go

grant select,insert ondbo.certest to salesrep1

grant select,insert ondbo.certest to salesrep2

go

--2、为每个用户创建一个证书

--CREATE MASTER KEY ENCRYPTION BYPASSWORD = ‘passw0rd‘

-- BACKUP MASTER KEY TO FILE =‘C:\sqlcert\masterkeya‘ ENCRYPTION BY

PASSWORD = ‘passw0rd‘

create certificate salesrep1certauthorization salesrep1

with subject=‘salesrep 1certificate‘

go

create certificate salesrep2certauthorization salesrep2

with subject=‘salesrep 2certificate‘

go

select * from sys.certificates

--3、为每个用户写入数据

execute as user=‘salesrep1‘

go

insert into dbo.certest

values(‘salesrep1‘,ENCRYPTBYCERT(CERT_ID(‘salesrep1cert‘),‘fabrikam‘))

revert

go

execute as user=‘salesrep2‘

go

insert into dbo.certest

values(‘salesrep2‘,ENCRYPTBYCERT(CERT_ID(‘salesrep2cert‘),‘contoso‘))

revert

go

--4、查看表的内容及每个用户的数据

select * from dbo.certest

go

execute as user=‘salesrep1‘

go

select*,CAST(DECRYPTBYCERT(cert_id(‘salesrep1cert‘),saleslead) as varchar(max))

from dbo.certest

revert

go

execute as user=‘salesrep2‘

go

select*,CAST(DECRYPTBYCERT(cert_id(‘salesrep2cert‘),saleslead) as varchar(max))

from dbo.certest

revert

go

9)、数据压缩

压缩方式:

A、行压缩:

a- 减少元数据头记录数据。

b- 所有的数值类型(integer,decimal,float)或基于数值类型的类型都会被压缩(datetime,money)。比如,100 被存在一个int 型字段中,占4 位,但是从0~255只需要1 位,压缩后,就节省了3byte 空间。c- Char 和NChar 都被存放于可变长度的类型中。原因同上。比如,CSDN 被存在Char(10)中,但是它只需要Char(4)空间,所以压缩后就释放了Char(6)个空间。

d- 所有类型的NULL 和0 都不占字节了。

B、页压缩:

a- 进行行压缩。

b- 前标压缩:每一页中的所有列,在行标头下面,每行都存储着一个行定义值,压缩后,所有行的定义值都被替换成行头值的引用。

c- 字典压缩:字典压缩和前标压缩类似。前标压缩中,一个与其他普通值不同的值被定义到每一列上。但是字典压缩中,每一页中所有列的普通值被存在下一行的行头前面。然后,这些值被替换成新行的引用值。

备份压缩:

a- 备份压缩可以大大减小数据库备份文件的大小,由于降低了备份时的I/O,所以进行备份压缩通常可以提高备份的速度。

b- 备份压缩是用CPU 换空间,虽然减少了存储空间大小,但是在备份和还原时将消耗更多的CPU。DB → 任务 → 备份 → 选择压缩备份

10)、安全性增强

A、 配置安全

B、 身份验证

Kerberos / NTLM

强制密码策略

端点身份验证

登录凭证加密

单点登录

C、 授权颗粒度更高

D、 数据加密

E、 行为审计

11)、元数据有关的存储

12)、新增系统函数

13)、策略管理:基于策略的管理是一种用于管理一个或多个SQL Server 2008 实例的系统。使用策略管理可以检查数据库对象的属性甚至限制数据库对象的修改。

14)、智能化管理

按需检查

按计划检查,记录违反策略情况

即时检查,阻止违反策略的操作

即时检查,记录违反策略情况

15)、新增T-SQL 语法:

INSERT 语句一次插入多条记录

INSERT INTO t1 VALUES (‘JohnDoe‘, ‘425-333-5321‘),

(‘Jane Doe‘, ‘206-123-4567‘),(‘John Smith‘, ‘650-434-7869‘);

新增操作符:+=、-=、*=、/= ……

UPDATE t1 SET c1+=1 WHERE c2=‘a‘

变量定义同时初始化

DECLAER @v int = 5;

DECLARE @v1 varchar(10) = xxxxx‘;

16)、Merge 语法

在SQLServer2008 中可以使用MERGE在一条语句中执行INSERT、UPDATE和DELETE操作,MERGE 语法包括四个主要子句:

MERGE 子句用于指定作为INSERT、UPDATE 或DELETE 操作目标的表或视图。

USING 子句用于指定要与目标联接的数据源。

ON 子句用于指定决定目标与源的匹配位置的联接条件。

WHEN 子句用于根据ON 子句的结果指定要执行的操作。

17)、Grouping Sets

使用GROUPING SETS 的GROUP BY子句可以生成一个等效于由多个简单GROUP BY子句的UNION ALL 生成的结果集

-- Use UNION ALL ondual SELECT statements

SELECT customerType,Null asTerritoryID,MAX(ModifiedDate)

FROM Sales.Customer GROUP BYcustomerType

UNION ALL

SELECT Null ascustomerType,TerritoryID,MAX(ModifiedDate)

FROM Sales.Customer GROUP BYTerritoryID

order by TerritoryID

-- Use GROUPING SETSon single SELECT statement

SELECTcustomerType,TerritoryID,MAX(ModifiedDate)

FROM Sales.Customer

GROUP BY GROUPING SETS((customerType), (TerritoryID))

order by customerType

18)、表值参数:

表值参数是使用用户定义的表类型来声明的。使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据。

19)、日期和时间类型

20)、Hierarchyid

用于创建具有层次结构的表,或引用位于另一个位置的数据层次结构。

系统提供了多个方法用于操作hierarchyid 数据类型。支持深度优先遍历和广度优先遍历:

21)、空间地理数据类型

22)、稀疏列

稀疏列是对 null 值采用优化的存储方式的普通列。

当至少能够节省 20% 到 40% 的空间时,才应考虑使用稀疏列。

一般情况下表最多可以创建1024 个列。使用稀疏列时可以在表中创建更多的稀疏列。使用稀疏列存储:

NULL 值: 0 bytes. 非NULL: +(2-4)b。

在稀疏列中检索非NULL 数据性能有一定下降。

23)、筛选索引:筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。

24)、FILESTREAM 存储:使用FILESTREAM 允许以独立文件的形式存放大对象数据

(varbinary(max)),而不是以往一样将所有数据都保存到数据文件中。

时间: 2024-11-05 05:44:12

22. SQL -- SQL Server 2005 和SQL Server 2008新特性的相关文章

SQL SERVER 2005快捷键+visual studio 2008 快捷键

一.SQL SERVER 2005快捷键  快捷键                                       功能           CTRL       +       SHIFT       +       B生成解决方案           CTRL       +       F7           生成编译           CTRL       +       O                                   打开文件          

记一次SQL server 2005 到SQL server 2008 数据库迁移

最近周末完成了一个从SQL server 2005升级到SQL server 2008的升级迁移,其实质是一个服务器迁移的过程.比较复杂的是这个服务器上的复制关系,自身既作为发布服务器,又作为订阅服务器,因此整个迁移同时需保证这些复制关系依旧可用.这个主服务器是供ERP使用,涉及到的模块也比较相对多,因此从迁移到验证整个过程还是比较长.记下本文以示庆贺. 一.主要的步骤    1.检查现有数据库的备份完整性(含发布及订阅数据库)及存在的复制关系       2.停止原服务器所有服务(含agent

SQL Server 2008新特性——更改跟踪

在大型的数据库应用中,经常会遇到部分数据的脱机和多个数据库的合并问题.比如现在有一个全省范围使用的应用程序,每个市都部署了单独的相同的应用程序服务器和数据库服务器,每个月需要将全省所有市的数据全部汇总起来用于出全省的报表,这是一种很常见的数据库合并问题.再比如我们做了一个SmartClient的应用程序,每个客户端都有应用程序和数据库,另外还有一个中心数据库用于汇总所有客户端的数据.每个智能客户端上都可以对自己的数据库进行增删改查,一旦智能客户端连接到网络上时,系统就将客户端数据库中的数据更改全

SQL Server2012在软件开发中的一些新特性

官方给出了一大堆SQL2012相对于SQL2008R2的新特性,但是大多数对于普通开发人员来说都是浮云,根本用不到,下面就说说一些对于开发人员来说比较有用的新特性. 一.在SQL Server中终于也看到了类似的对象,只是在使用的语法上有一点点不一样.创建语法也是CREATE SEQUENCE,使用的时候需要使用NEXT VALUE FOR来取下一个值: 复制代码代码如下: CREATE SEQUENCE [dbo].[SQ_1]  AS [bigint] START WITH 1 INCREM

SQL Server 2008新特性——策略管理

从图中可以看到,策略管理中包含三个节点:策略.条件.方面. 方面就是策略要应用的对象,包括:服务器.表.触发器.视图.存储过程……这些方面对象都是系统定义好了的,仅供瞻仰不可更改.双击具体的某一个方面可以查看该方面的属性,在定义条件时即可对这些属性进行判断,如图为存储过程方面的属性. 条件就是一个布尔表达式判断策略是否为真. 策略就是在条件为假的情况下要执行的操作,即评估模式.策略中的评估模式有4种:按需.按计划.更改时记录和更改时禁止.对于这4种模式,官方给出如下定义: •按需.当用户直接指定

实战SQL Server 2005镜像配置全过程

SQL Server 2005镜像配置基本概念 我理解的SQL Server 2005镜像配置实际上就是由三个服务器(也可以是同一服务器的三个 SQL 实例)组成的一个保证数据的环境,分别是:主服务器.从服务器.见证服务器. 主服务器:数据存放的地方 从服务器:数据备份的地方(即:主服务器的镜像) 见证服务器:动态调配主/从服务器的第三方服务器 环境介绍 首先介绍一下配置的环境: 本次配置使用的是三个独立的服务器(A.B.C三台电脑). A:主服务器,IP:192.168.0.2 B:从服务器,

SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id"

案例环境: 数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍: 对一个数据库实例做清理工作时,发现有一个很久之前禁用的数据库维护作业,于是遂删除该作业,但是删除该作业时,遇到如下错误: 脚本删除操作: USE [msdb] GO EXEC msdb.dbo.sp_delete_job @job_id=N'876ab683-6d81-47c4-bba2-0dfa581561

[翻译]初识SQL Server 2005 Reporting Services Part 2

原文:[翻译]初识SQL Server 2005 Reporting Services Part 2 在Part 1文章中我们对SQL Server Reporting Services 2005(SSRS)有了一个初步的了解.我们分别通过报表向导和报表设计器构建了两个报表.在Part 2我们将以一个SSRS开发者的身份深入查看更多特征信息. 以下是我们要研究的: l 表达式的用法.这些表达式可以让你动态的控制从控件属性到数据绑定的报表的各个方面. l 报表中用到的计算和操作的通用函数. l 报

atitit.Windows Server 2003 2008 2012系统的新特性 attilax 总结

atitit.Windows Server 2003  2008  2012系统的新特性 attilax 总结 1. Windows Server 2008 新特性也可以归纳为4个方面. 1 2. 相比Windows Server 08,R2 2 3. win 2012  新特性 2 4. 参考 6 1. Windows Server 2008 新特性也可以归纳为4个方面. 即将发布的Windows Server 2008是企业级的应用平台,可以为CRM等企业级应用提供更好更强的支撑,其新特性也