SQL Server 2008新特性——策略管理
策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例、数据库以及数据库对象的各种属性。策略管理在SSMS的对象资源管理器数据库实例下的“管理”节点下,如图:
从图中可以看到,策略管理中包含三个节点:策略、条件、方面。
方面就是策略要应用的对象,包括:服务器、表、触发器、视图、存储过程……这些方面对象都是系统定义好了的,仅供瞻仰不可更改。双击具体的某一个方面可以查看该方面的属性,在定义条件时即可对这些属性进行判断,如图为存储过程方面的属性。
条件就是一个布尔表达式判断策略是否为真。
策略就是在条件为假的情况下要执行的操作,即评估模式。策略中的评估模式有4种:按需、按计划、更改时记录和更改时禁止。对于这4种模式,官方给出如下定义:
- 按需。当用户直接指定这种模式时,它可对策略进行评估。
- 更改时: 禁止。这种自动模式使用 DDL 触发器来防止违反策略。
- 更改时: 仅记录。当发生相关更改并违反日志策略时,这种自动模式使用事件通知对策略进行评估。
- 按计划。这种自动模式使用 SQL Server 代理作业定期对策略进行评估。此模式记录违反策略的情况。
其中按需是手动操作的,其他三个则可以自动完成。按计划是使用SQL Server代理来定时检查策略,另外两个是在更改时由DDL触发器触发。
其他的概念我不用多说,大家可以看联机丛书,这里就举个例子来说明策略管理的使用。
假设现在我们要开发个业务系统,其数据库为TestDB1,使用ADO.NET 调用存储过程来实现数据操作,现在项目中规定存储过程的命名规范:以“usp_”开头。这里我们可以使用策略管理来实现对该规范的检查或强制实行。具体操作过程如下:
(1)由于我们针对的对象是存储过程,所以在“方面”节点下右击“存储过程”,选择“新建条件”选项,系统将会弹出新建条件的窗口。
(2)输入“条件”的名称:“存储过程命名规范”,然后字段列表中选择@Name,运算符为LIKE,值为'usp[_]%'。也就是判断存储过程的名字LIKE 'usp[_]%',也就是以“usp_”开头的SQL表达。如图:
这里字段和值都可以使用变量和函数,如果允许“USP_”、“Usp_”等开头的存储过程,则可以将字段运用小写函数,改写为“Lower(@Name)”,然后单击“确定”按钮,创建“条件”完成。
(3)右击“策略”节点,在右键菜单中选“新建策略”选项,系统将打开新建策略窗口,输入策略名“检查存储过程命名规范”,在检查条件的下拉列表中选择刚创建的条件“存储过程命名规范”,系统将根据选择的检查条件列出针对目标,默认情况下是对每个数据库的每个存储过程进行检查,由于这里我们只希望检查TestDB1数据库,所以需要新建数据库的条件,如图:
(4)单击“新建条件”后将出现与第(2)步新建条件相同的窗口,只是这里我们新建的条件方面是数据库,新建条件TestDB1,如图所示:
(5)单击“确定”按钮回到新建策略窗口,针对目标变成了对TestDB1数据库的每个存储过程。这里若要强制实现这个策略,则选择评估模式为“更改:禁止”并选中“已启用”复选框表示启用该策略。
(6)单击“说明”选择页,可以在其中选择策略的类别、在违反策略时给出的友好说明。最后单击“确定”按钮即可完成策略的创建工作。
(7)接下来就是测试该策略是否有效了,运行如下SQL语句创建一个存储过程usp_GetDate:
USE TestDB1
GO
CREATE PROC usp_GetDate
AS
SELECT GETDATE()
GO一切正常,存储过程被创建成功。那么再创建一个存储过程db1_GetDate:
USE TestDB1
GO
CREATE PROC db1_GetDate
AS
SELECT GETDATE()
GO哈哈,系统抛出异常了:
“SQLSERVER:\SQL\MS-ZY\DEFAULT\Databases\TestDB1\StoredProcedures\dbo.db1_GetDate”已违反策略“检查存储过程命名规范”。
此事务将回滚。
策略条件:“Lower(@Name) LIKE 'usp[_]%'”
策略说明:“项目中统一了TestDB1数据库中存储过程的命名规范,所有存储过程必须以usp_开头”
其他帮助:“存储过程必须以usp_开头”:“”
语句:“CREATE PROC db1_GetDate
AS
SELECT GETDATE()
”。
消息 3609,级别 16,状态 1,过程 sp_syspolicy_dispatch_event,第 65 行
事务在触发器中结束。批处理已中止。再看看对象资源管理器中,该存储过程确实没有被创建。同样可以在另外的数据库中创建这两个存储过程,但是由于策略中针对的是TestDB1数据库,所以在其他数据库中这两个存储过程都将会被成功创建。
现在有了这个策略,大家在命名存储过程时都必须按照规范来了。
如果策略被定义为“按需”评估模式的话,则用户可以在其中创建违反策略的存储过程。若要检查现有的数据库对象是否符合策略,只需要在对象资源管理器中右击数据库对象节点,然后选择右键菜单中的“策略”下的“评估” 选项,如果要检查具体某个数据库对象的“方面”属性值的话,则选择右键菜单中的“方面”选项。
选择“评估”选项后系统弹出评估策略窗口,其中列出了所有存储过程方面相关的策略,选择需要验证的策略,然后单击“评估”按钮即可查看当前数据库对象是否符合策略。
这里只是一个简单的示例而已,策略管理的功能远不止命名规范的检查这么简单,通过策略管理还可以检查数据库是否自动收缩、SQL Server的密码策略、网络数据表大小、最大并行度……
微软为我们提供了一个安装包,其中包含了大量的策略示例,帮助大家学习和使用基于策略的管理,下载地址:
SQL Server 2008新特性——策略管理的更多相关文章
- SQL Server 2008新特性——更改跟踪
在大型的数据库应用中,经常会遇到部分数据的脱机和多个数据库的合并问题.比如现在有一个全省范围使用的应用程序,每个市都部署了单独的相同的应用程序服务器和数据库服务器,每个月需要将全省所有市的数据全部汇总 ...
- 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...
- SQL Server 2014新特性——Buffer Pool扩展
Buffer Pool扩展 Buffer Pool扩展是buffer pool 和非易失的SSD硬盘做连接.以SSD硬盘的特点来提高随机读性能. 缓冲池扩展优点 SQL Server读以随机读为主,S ...
- SQL Server 2014 新特性:IO资源调控
谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 2014-07-01 10:19 by 听风吹雨, 570 阅读, 16 评论, 收藏, 收藏 一.本文所涉及 ...
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- 小心SQL SERVER 2014新特性——基数评估引起一些性能问题
在前阵子写的一篇博文"SQL SERVER 2014 下IF EXITS 居然引起执行计划变更的案例分享"里介绍了数据库从SQL SERVER 2005升级到 SQL SERVER ...
- SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)
原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一 ...
- SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer
SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...
- SQL Server 2016新特性:列存储索引新特性
SQL Server 2016新特性:列存储索引新特性 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的. 非聚集的列存储索引支持筛选条件. 在内存优化表中可以有一个列存储索引,可 ...
随机推荐
- Https 请求工具(put,post,get)
package com.util; /** * @Description: 类描述 * @author 作者 ll E-mail:80002132@sf-express.com * @version ...
- 快速提高 Vi/Vim 使用效率的原则与途径
Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器.因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户.管理员必须掌握并熟练使用的编辑工具之一.尤其是在 ...
- Vsftpd支持SSL加密传输
ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题 SSL(Secure Socket Layer)工作于传输层和应用程 ...
- 牛客网 牛客小白月赛12 B.华华教月月做数学-A^B mod P-快速幂+快速乘
链接:https://ac.nowcoder.com/acm/contest/392/B来源:牛客网 华华教月月做数学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...
- TCP/IP——ARP与RARP简记
ARP(Address Resolution Protocol):ARP为IP地址到对应的硬件地址(MAC)之间提供动态映射.这个过程是自动完成的,一般应用程序用户和系统管理员不必要关心. ARP高速 ...
- T型知识实践结构的力量(转载)
最近在做的一些新的事情,这其中获得的一些新的思考. T型的知识积累,深度的挖掘可以通过"举一反三"的应用在广度上,广度可以通过"交叉验证"加强我们的认识,可以说 ...
- 51nod1380 夹克老爷的逢三抽一
问题等价于选出$n / 3$个不相邻元素是权值和最大 这是一个经典贪心问题,同种树,拿堆维护即可,复杂度$O(n \log n)$ #include <queue> #include &l ...
- 密码加密_md5
md5加密 package com.fh.util; import java.security.MessageDigest; public class MD5 { public static Stri ...
- SCOJ 4484 The Graver Robbers' Chronicles 后缀自动机
4484: The Graver Robbers' Chronicles 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4484 Descript ...
- JMX操作实例--做一回技术控
我来做一回技术控,这部分内容也是简单的API调用例子而已,做一回技术控,发点小骚文,不过你看了,也许知道JConsole是怎么做出来的了,呵呵! 先不用管他干什么,代码运行后,自己改改自然知道做什么的 ...