DECLARE @STdate datetime</code> SELECT @STdate = GETDATE() --Create a table with columns which suits your needs. DECLARE @tbl table ( PKID int identity(1,1), TableName varchar(1000), ColumnName varchar(500), ConstraintName varchar(500), DefaultValueDef varchar(100), Processed bit default 0 --It is important that you have this field, as this field is used as a reference to find out if the row is processed or not. ) --DECLARE necessary variables to operate on DECLARE @PKID int,@TabNam varchar(1000), @ColNam varchar(500), @ConstNam varchar(500), @Def varchar(100) INSERT INTO @tbl(TableName,ColumnName,ConstraintName,DefaultValueDef) SELECT sc.Name + '.' + t.Name,c.Name,dc.Name,dc.[definition] FROM sys.tables t INNER JOIN sys.default_constraints dc ON t.object_id = dc.parent_object_id INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND c.column_id = dc.parent_column_id inner join sys.schemas sc on t.schema_id = sc.schema_id --Iterate through each row WHILE (EXISTS (select PKID from @tbl where Processed=0)) BEGIN SELECT TOP 1 @PKID = [PKID], @TabNam = TableName, @ColNam = ColumnName, @ConstNam = ConstraintName, @Def = DefaultValueDef FROM @tbl where Processed=0 select @TabNam, @ColNam, @ConstNam, @Def UPDATE @tbl SET Processed=1 WHERE PKID = @PKID END SELECT DATEDIFF(millisecond, @stdate, getdate()) as 'Finished in millisecond'