SELECT OBJECT_NAME(sc.rule_object_id) AS RuleName ,OBJECT_NAME(sc.object_id) AS TableName ,sc.name AS ColumnNameFROM sys.objects soJOIN sys.columns sc ON so.object_id = sc.rule_object_idWHERE so.type_desc = 'rule'
SELECT OBJECT_NAME(OBJS.object_id) As TableName,* FROM sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.[object_id] = COLS.[object_id] INNER JOIN sys.sql_modules MODS ON COLS.[rule_object_id] = MODS.[object_id] WHERE COLS.[rule_object_id] <> 0
CREATE RULE [dbo].[NumericCharsOnly] AS--@value NOT LIKE '%[0-9,-+]%' ESCAPE '!' --bad way...minus and spec chars need to be first!@value NOT LIKE '%[^-+,0-9]%' ESCAPE '!'GO--create a "type" , and bind the rule to teh typeCREATE TYPE [dbo].[numchar] FROM [varchar](20) NULLGOEXEC sys.sp_bindrule @rulename=N'[dbo].[NumericCharsOnly]', @objname=N'[dbo].[numchar]' , @futureonly='futureonly'GO--a simple test table.drop table examplecreate table example(exampleid int identity,test numchar)--insert some test data.insert into example(test) values ('0000')GOinsert into example(test) values ('00a00') --fails! all is goodGOinsert into example(test) values ('0000&444') --fails as expectedGOinsert into example(test) values ('-0000') --failed when i did not want it tooGOinsert into example(test) values ('+0000') --failed when i did not want it tooGOdrop table exampledrop type [numchar]drop rule [NumericCharsOnly]