WEB开发网
开发学院数据库MSSQL Server SQL Server 2008的透明数据加密 阅读

SQL Server 2008的透明数据加密

 2008-08-09 09:55:09 来源:WEB开发网   
核心提示: 最后,在TestDatabase2 中创建了DEK,SQL Server 2008的透明数据加密(6),Encryption属性设置为true,所有的语句都成功执行,然后你需要在这个数据库上激活TDE并执行其它的与激活TDE之前备份所使用的相同代码,备份文件规模是:在激活TDE之前完全备份

最后,在TestDatabase2 中创建了DEK,Encryption属性设置为true。所有的语句都成功执行。如果你查询sys.dm_database_encryption_keys,你将看到TestDatabase2的encryption_state是2,这表示加密结束了但没有完成。

是否使用了FileStream数据类型?

使用了filestream类型的数据库可以使用TDE来进行加密,但是文件流数据不会被加密。

当激活TDE之后会影响什么?

在一个数据库上激活TDE会影响以下事情:

事务日志

一旦TDE激活了,SQL Server 通过将文本数据清理出去从而确保日志文件不包含文本数据。SQL Server 从具有加密格式的新VLF开始。

TEMPDB系统数据库

当你在任何数据库上激活了TDE之后这将会自动加密。这会导致使用tempdb数据库的非加密数据库性能下降。

日志传送和数据库镜像

如果你在一个传送日志到另一个数据库的数据库(意味着激活了日志传送的数据库)上激活了TDE,那么日志传送操作将会在辅助数据库上失败,除非在辅助服务器上证书可用。

压缩备份

下面是在一个激活了TDE的数据库上进行压缩备份的测试,看起来在激活TDE的数据库上压缩并不怎么高效: 

  -- create a new database for testing compressed backup on TDE enabled database
USE master
GO
CREATE DATABASE [TestDatabase3] ON PRIMARY
( NAME = N'TestDatabase3', FILENAME = N'E:TestDatabase.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ),
LOG ON
( NAME = N'TestDatabase3_log', FILENAME = N'E:TestDatabase3_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
  -- Create a table and insert some records
USE TestDatabase3
GO
CREATE TABLE TestTable (Id int primary key, [Value] char(8000))
GO
INSERT INTO TestTable VALUES (1, 'value1')
INSERT INTO TestTable VALUES (2, 'value1')
INSERT INTO TestTable VALUES (3, 'value1')
INSERT INTO TestTable VALUES (4, 'value1')
INSERT INTO TestTable VALUES (5, 'value1')
INSERT INTO TestTable VALUES (6, 'value1')
  -- Backup the TestDatabase3 without compressing it
BACKUP DATABASE [TestDatabase3]
TO DISK = N'E:TestDatabase3Full.bak'
WITH NOFORMAT, NOINIT, NAME = N'TestDatabase3-Full Database Backup'
GO
  -- Backup the TestDatabase3 with compression
BACKUP DATABASE [TestDatabase3]
TO DISK = N'E:TestDatabase3Full_Compressed.bak'
WITH NOFORMAT, NOINIT, NAME = N'TestDatabase3-Full Database Backup (Compressed)', COMPRESSION
GO
  -- Now enable TDE on this
-- Use the code we used with first example
  -- Backup the TestDatabase3 again (after TDE enabled) without compressing it
BACKUP DATABASE [TestDatabase3]
TO DISK = N'E:TestDatabase3Full_Encrypted.bak'
WITH NOFORMAT, NOINIT, NAME = N'TestDatabase3-Full Database Backup (encrypted)'
GO
  -- Backup the TestDatabase3 with compression
BACKUP DATABASE [TestDatabase3]
TO DISK = N'E:TestDatabase3Full_Encrypted_Compressed.bak'
WITH NOFORMAT, NOINIT, NAME = N'TestDatabase3-Full Database Backup (Encrypted and compressed', COMPRESSION
GO

这个代码创建一个数据库并插入一些记录到数据表中。然后这个数据库被备份两次,一次没有压缩另一次有压缩。然后你需要在这个数据库上激活TDE并执行其它的与激活TDE之前备份所使用的相同代码。备份文件规模是:

在激活TDE之前完全备份1,365 KB

在激活TDE之前有压缩的完全备份124KB

激活TDE之后的完全备份1,365 KB

激活TDE之后有压缩的完全备份 1,278 KB

你可以看到它们的不同。结果证明激活了TDE的数据库的压缩备份文件不那么高效。

上一页  1 2 3 4 5 6 

Tags:SQL Server 透明

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接