日度归档:2019年5月13日

mssql sqlserver 加快数据库回滚的速度–ACCELERATED_DATABASE_RECOVERY用法说明


摘要:
下文通过举例的方式,讲述sqlserver中加速数据库回滚时间的方法,如下所示:
实验环境:sql server 2019


当一个长事务被意外终止或停止时,回滚此事务需要大量的时间,下文讲述sqlserver2019中通过开启

ACCELERATED_DATABASE_RECOVERY
属性,来提升sqlserver事务回滚时间的方法

例: 测试方案一

---1.创建数据库 

CREATE DATABASE [maomao];
GO
USE [maomao]
GO
SET STATISTICS TIME ON
GO

---2.开启事务,并运行以下脚本
BEGIN TRANSACTION
 

DROP TABLE IF EXISTS testTable;
 
---生成新数据表,并插入数据
SELECT TOP 10000000 a1.* 
INTO testTable 
FROM sys.all_objects AS a1
CROSS JOIN sys.all_objects AS a2
CROSS JOIN sys.all_objects AS a3
GO

 
/*
SQL Server Execution Times:
CPU time = 1632000 ms, elapsed time = 26108 ms.
*/

---3回滚事务
ROLLBACK
GO 
/*
SQL Server Execution Times:
CPU time = 386000 ms, elapsed time = 12603 ms.
*/ 

例:
测试方案2:
设置 ACCELERATED_DATABASE_RECOVERY属性为ON

 ALTER DATABASE [maomao] 
  SET ACCELERATED_DATABASE_RECOVERY = ON;
  GO 


---2.开启事务,并运行以下脚本
BEGIN TRANSACTION
 

DROP TABLE IF EXISTS testTable;
 
---生成新数据表,并插入数据
SELECT TOP 10000000 a1.* 
INTO testTable 
FROM sys.all_objects AS a1
CROSS JOIN sys.all_objects AS a2
CROSS JOIN sys.all_objects AS a3
GO

 
/*
SQL Server Execution Times:
CPU time = 1632000 ms, elapsed time = 26108 ms.
*/

---3回滚事务
ROLLBACK
GO 
/*
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
*/ 


从以上的两个测试用例上,我们可以看出设置ACCELERATED_DATABASE_RECOVERY属性后,rollback性能得到了质的飞跃。

mssql sqlserver DECRYPTBYPASSPHRASE系统函数使用简介说明


摘要:
下文讲述加密函数”DECRYPTBYPASSPHRASE”的用法简介,如下所示
实验环境:sql server 2008 R2



DECRYPTBYPASSPHRASE 功能说明


DECRYPTBYPASSPHRASE:此函数是对使用ENCRYPTBYPASSPHRASE加密的内容进行解密。

DECRYPTBYPASSPHRASE 语法说明:
DecryptByPassPhrase ( { ‘passphrase’ | @passphrase }
, { ‘ciphertext’ | @ciphertext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
——参数说明———–
passphrase
密钥–指定常量
@passphrase
密钥变量—
@passphrase变量类型为:
nvarchar、char、varchar、binary、varbinary、nchar
@passphrase大小最大为8000个字节
ciphertext:
待解密的字符串
@ciphertext
待解密的字符串
@ciphertext变量类型为: varbinary
@ciphertext大小最大为8000个字节
add_authenticator:
此变量类型为int
设置原始加密内容是否包含验证器和源字符串一起加密
@add_authenticator:
设置原始加密内容是否加hash同待加密字符串一起加密。
authenticator:
生成验证器数据
@authenticator
验证器变量
———DECRYPTBYPASSPHRASE返回值—–
返回一个varbinary数据类型,数据大小为8000字节



DECRYPTBYPASSPHRASE 举例应用

 
    declare @maomaoB varbinary(8000)
     declare @maomaoKey nvarchar(30)
     set @maomaoKey ='testSqlBlog'

select @maomaoB=EncryptByPassPhrase(@maomaoKey  
    ,N'猫猫小屋')
      
    select convert(nvarchar(30), DecryptByPassPhrase(@maomaoKey,@maomaoB) )

mssql sqlserver ENCRYPTBYPASSPHRASE系统函数使用简介说明


摘要:
下文讲述加密函数”ENCRYPTBYPASSPHRASE”的用法简介,如下所示
实验环境:sql server 2008 R2



ENCRYPTBYPASSPHRASE 功能说明


ENCRYPTBYPASSPHRASE:此函数是一个使用TRIPLE DES 算法以及 128 密钥位长度的对字符串进行加密的函数。

ENCRYPTBYPASSPHRASE 语法说明:
EncryptByPassPhrase ( { ‘passphrase’ | @passphrase }
, { ‘cleartext’ | @cleartext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )

——参数说明———–
passphrase
密钥–指定常量
@passphrase
密钥变量—
@passphrase变量类型为:
nvarchar、char、varchar、binary、varbinary、nchar
@passphrase大小最大为8000个字节
cleartext:
待加密的字符串
@cleartext
待加密的字符串变量
@cleartext变量类型为:
nvarchar、char、varchar、binary、varbinary、nchar
@cleartext大小最大为8000个字节
add_authenticator:
此变量类型为int
设置验证器是否同待加密字符串一起加密
@add_authenticator:
是否加hash同待加密字符串一起加密。
authenticator:
生成验证器数据
@authenticator
验证器变量
———ENCRYPTBYPASSPHRASE返回值—–
返回一个varbinary数据类型,数据大小为8000字节


注意事项:
1.密钥可包含空格
2.此函数只做加密操作,不对密钥的复杂性做验证



ENCRYPTBYPASSPHRASE 举例应用

 declare @maomaoKey nvarchar(30)
set @maomaoKey ='testSqlBlog'

select EncryptByPassPhrase(@maomaoKey  
    ,N'猫猫小屋')