【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行:
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 从而完成此条件的添加过程