WEB开发网
开发学院数据库MSSQL Server SQL Server 2008新特性——策略管理 阅读

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

 2008-09-09 10:04:45 来源:WEB开发网   
核心提示: (4)单击“新建条件”后将出现与第(2)步新建条件相同的窗口,只是这里我们新建的条件方面是数据库,SQL Server 2008新特性——策略管理(3),新建条件TestDB1,如图所示: (5)单击“确定”按钮回到新建策略窗口,策略管理的

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

(4)单击“新建条件”后将出现与第(2)步新建条件相同的窗口,只是这里我们新建的条件方面是数据库,新建条件TestDB1,如图所示:

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

(5)单击“确定”按钮回到新建策略窗口,针对目标变成了对TestDB1数据库的每个存储过程。这里若要强制实现这个策略,则选择评估模式为“更改:禁止”并选中“已启用”复选框表示启用该策略。

(6)单击“说明”选择页,可以在其中选择策略的类别、在违反策略时给出的友好说明。最后单击“确定”按钮即可完成策略的创建工作。

(7)接下来就是测试该策略是否有效了,运行如下SQL语句创建一个存储过程usp_GetDate:

  USETestDB1
  GO
  CREATEPROCusp_GetDate
  AS
  SELECTGETDATE()
  GO

一切正常,存储过程被创建成功。那么再创建一个存储过程db1_GetDate:

  USETestDB1
  GO
  CREATEPROCdb1_GetDate
  AS
  SELECTGETDATE()
  GO

哈哈,系统抛出异常了:

  “SQLSERVER:SQLMS-ZYDEFAULTDatabasesTestDB1StoredProceduresdbo.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 2008新特性——策略管理

选择“评估”选项后系统弹出评估策略窗口,其中列出了所有存储过程方面相关的策略,选择需要验证的策略,然后单击“评估”按钮即可查看当前数据库对象是否符合策略。

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

这里只是一个简单的示例而已,策略管理的功能远不止命名规范的检查这么简单,通过策略管理还可以检查数据库是否自动收缩、SQL Server的密码策略、网络数据表大小、最大并行度……

微软为我们提供了一个安装包,其中包含了大量的策略示例,帮助大家学习和使用基于策略的管理.

上一页  1 2 3 

Tags:SQL Server 特性

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