易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL SERVER 2005数据加密

-- 示例一, 使用证书加密数据.
-- 建立测试数据表
CREATE TABLE tb(ID int IDENTITY (1,1),data varbinary (8000));
GO
-- 建立证书一, 该证书使用数据库主密钥来加密
CREATE CERTIFICATE Cert_Demo1 
WITH 
  SUBJECT = N'cert1 encryption by database master key' ,
  START_DATE = '2008-01-01' ,
    EXPIRY_DATE = '2008-12-31'
GO
-- 建立证书二, 该证书使用密码来加密
CREATE CERTIFICATE Cert_Demo2
  ENCRYPTION BY PASSWORD = 'liangCK.123'
WITH 
  SUBJECT = N'cert1 encrption by password' ,
    START_DATE = '2008-01-01' ,
  EXPIRY_DATE = '2008-12-31'
GO
-- 此时, 两个证书已经建立完, 现在可以用这两个证书来对数据加密
-- 在对表tb 做INSERT 时, 使用ENCRYPTBYCERT 加密
INSERT tb(data)
  SELECT ENCRYPTBYCERT ( CERT_ID ( N'Cert_Demo1' ), N' 这是证书1 加密的内容-liangCK' );   -- 使用证书1 加密
INSERT tb(data)
  SELECT ENCRYPTBYCERT ( CERT_ID ( N'Cert_Demo2' ), N' 这是证书2 加密的内容-liangCK' );   -- 使用证书2 加密
--ok. 现在已经对数据加密保证了. 现在我们SELECT 看看
SELECT * from tb ;
-- 现在对内容进行解密显示.
-- 解密时, 使用DECRYPTBYCERT
SELECT 证书1 解密 = CONVERT ( NVARCHAR (50), DECRYPTBYCERT ( CERT_ID ( N'Cert_Demo1' ),data)),
       -- 使用证书2 解密时, 要指定DECRYPTBYCERT 的第三个参数,
       -- 因为在创建时, 指定了ENCRYPTION BY PASSWORD.
       -- 所以这里要通过这个密码来解密. 否则解密失败
       证书2 解密
= CONVERT ( NVARCHAR (50), DECRYPTBYCERT ( CERT_ID ( N'Cert_Demo2' ),data, N'liangCK.123' ))
from tb ;
-- 我们可以看到, 因为第2 条记录是证书2 加密的. 所以使用证书1 将无法解密. 所以返回NULL
/*
证书1 解密                                 &


相关文档:

SQL 删除重复数据,只保留1条

if not object_id('Tempdb..#T') is null
    drop table #T
Go
Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
Insert #T
select 1,N'A',N'A1' union all
select 2,N'A',N'A2' union all
select 3,N'A',N'A3' union all
select 4,N'B',N'B1' union all
select 5,N'B',N'B2'
G ......

SQL 找出多个字段满足其中一个字段的新写法

找出TABLE1中
Column1 满足value1
或者
Column2 满足value2
或者
Column3 满足value3
的纪录
SELECT top 10 * from TABLE1
WHERE
CASE WHEN COLUMN1='value1' THEN 1
ELSE
(CASE WHEN COLUMN2='value2' THEN 1
ELSE
(CASE WHEN COLUMN3=value3 THEN 1 ELSE 0 END)
END)
END =1 ......

PL/SQL语言简介

一、    PL/SQL语言简介
(本讲义之所有程序均调式通过)
首先我们看一个简单之例子,下面这个例子是统计从1至100的总和.
declare
i number:=0;          /*声明变量井给初值*/
t number:=1;
error_message exception;  /*声明一个出错处理*/
begin ......

SQL Server DATEDIFF() 函数

定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart
缩写

yy, yyyy
季度
qq, q

mm, m
年中的日
dy, y

dd, d

wk, ww
星期
dw, w
小时
h ......

清理SQL Server 2008数据库日志

第一步, 在收缩前先查看日志的大小:
SELECT *
from sysfiles
WHERE name LIKE ' % LOG %'
GO
第二步, 把数据库的恢复模式设成”简单”:
ALTER DATABASE 库名 SET RECOVERY SIMPLE
GO
第三步, 运行checkpoint指令, 把dirty page写进数据库:
CHECKPOINT
GO
第四步, 截断日志: 
BACKUP ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号