技术开发 频道

详解SQL Server 2008中创建自定义策略

  【IT168 技术文档】在此练习当中,您将通过定义策略来阻止在DBO架构下创建对象。

  1.在AdventureWorks 的dbo 架构下新建对象

  (1)依次点击File, Open, File… 然后打开C:\Manageability Labs\Policy-Based Management 目录下的ObjectOwnerCreationPoliciesTestScript.sql 脚本,确保在CHICAGO\SQLDev01 实例下打开该脚本

  (2)打开行号。点击Tools, Options… 在Options 对话框中,展开Text Editor 部分然后选择All Languages.勾选Line numbers 选项,然后点击OK 并关闭该对话框

  (3)执行第27-40行:

  USE AdventureWorks

  
go

  
CREATE TABLE TestTable

  (

  Col1
int

  )

  
go

  
SELECT SCHEMA_NAME(schema_id) AS SchemaName, *

  
FROM sys.objects

  
WHERE [name] = 'TestTable'

  
-- note that it is in the default schema of dbo

  
go

   (4)查看输出结果显示架构名称为dbo.

  (5)保持该脚本处于打开状态,然后继续后面的任务

  2.创建一个策略可以强制执行的条件

  (1)在CHICAGO\ConfigServer 的Object Explorer 中,依次展开Management, Policy Management, Conditions.

  (2)右键点击Conditions 然后点击New Condition…

  (3)在General 选项卡中,输入“DBO is not a valid user-defined Schema Name” 作为该条件的名称

  (4)在Facet 下拉列表中,点击Multipart Name.

  (5)在Expression 中首先点击Field 下拉列表,然后点击Field 列中的单元格,此时下拉菜单将会出现。针对Multipart Name 有两个选项,分别是@Name (针对对象名称) 和@Schema (针对创建此对象的架构名称). 选择@Schema.

  (6)在Expression 中点击Operator 下拉列表。在此实验中我们希望@Schema != ‘dbo’ ,因此在Operator 下拉列表中选择!=

  (7)最后,在Value 列中输入‘dbo’ (包括上引号).

  (8)点击下面的空行,从而完成当前行的输入。然后点击OK 退出

  (9)在Description 选项卡中,输入如下信息:“DBO is not a valid user-defined Schema Name as object/schema separation is enforced. All user-defined objects should be designed/defined in schemas that reflect the granularity required for security and object access.”.

  (10)点击OK 从而完成此条件的添加过程

0
相关文章