2011-09-28 43 views

回答

2

是的,你可以通过基于策略的管理来实现。您创建条件的过程方面与参数@名称NOT LIKE'sp_%'。然后,您为该条件创建政策,您可以按需或按计划执行此操作。

+2

请注意,模式'sp_%'匹配任何以字母'sp'开头且至少包含一个以上字符的名称,因为'_'是一个特殊字符。我认为模式'sp [_]%'可以工作。 –

+1

此外,政策系统可以让您发现*某些事情已经做错了,但并未阻止事情发生。 –

2
  1. 打开SQL Management Studio中
  2. 转到 “管理” - >状况 - >创建新的条件
  3. 为条件输入一个名称。
  4. 选择小面 “存储过程”
  5. 在列中输入 “现场” @name
  6. 输入栏 “操作员” NOT LIKE
  7. 列 “值” 'SP [_]%' 回车
  8. 点击确定保存

  9. 创建一项政策。进入“管理” - >策略 - >创建新策略

  10. 的政策
  11. 输入一个名称,选择在下拉菜单中选择条件“查询条件”
  12. 集命名为“评估模式”到“在变化:防止”
  13. 启用该策略
  14. 点击OK输入一个新的查询

  15. 保存并启用该策略

  16. 测试的策略210

CREATE PROCEDURE sp_test对它 @LastName为nvarchar(50), @firstName为nvarchar(50) AS

SET NOCOUNT ON; SELECT姓氏,部门 FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; GO

这导致:

政策 'StoredProcNamingPolicy' 已由>侵犯> 'SQLSERVER:\ SQL \ DB01 \ DEFAULT \数据库\ MYDB \ StoredProcedures \ dbo.sp_test'。 该交易将被回滚。 策略条件: '@Name NOT LIKE'SP [_]%' 策略说明: '' 附加帮助: '': '' 声明:“CREATE PROCEDURE sp_test对它 @LastName为nvarchar(50), @firstName nvarchar(50) AS

SET NOCOUNT ON; SELECT FirstName,LastNam ...'。 消息3609,级别16,状态1,过程sp_syspolicy_dispatch_event,行65 事务在触发器中结束。该批次已被中止。

+0

管理工作室的这个管理菜单在哪里? –

相关问题