| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- CREATE PROCEDURE Usp_droptablecolstatistics(@TableName  SYSNAME, 
 
-                                             @ColumnName SYSNAME = NULL) 
 
- AS 
 
-   BEGIN 
 
-       SET nocount ON 
 
-       DECLARE @Sql NVARCHAR(max) 
 
-       DECLARE @StatsName SYSNAME 
 
-       DECLARE @Error INT 
 
-       IF ( @TableName IS NULL 
 
-             OR Object_id(@TableName) IS NULL ) 
 
-         PRINT 'Table name doesnt exist in the database' 
 
-       ELSE IF ( @ColumnName IS NOT NULL ) 
 
-          AND (SELECT NAME 
 
-               FROM   sys.columns 
 
-               WHERE  object_id = Object_id(@Tablename) 
 
-                      AND NAME = @ColumnName) IS NULL 
 
-         PRINT 'Column name doesnt exist in the table ' 
 
-               + @TableName 
 
-       IF @ColumnName IS NULL 
 
-         BEGIN 
 
-             DECLARE cur CURSOR local FOR 
 
-               SELECT @TableName AS 'TableName', 
 
-                      s.NAME     AS 'StatsName' 
 
-               FROM   sys.stats s 
 
-                      JOIN sys.tables t 
 
-                        ON s.object_id = t.object_id 
 
-               WHERE  s.object_id > 100 
 
-                      AND t.object_id = Object_id(@TableName) 
 
-         END 
 
-       ELSE 
 
-         BEGIN 
 
-             DECLARE cur CURSOR local FOR 
 
-               SELECT @TableName AS 'TableName', 
 
-                      s.NAME     AS 'StatsName' 
 
-               FROM   sys.stats s 
 
-                      INNER JOIN sys.stats_columns AS sc 
 
-                              ON s.object_id = sc.object_id 
 
-                                 AND s.stats_id = sc.stats_id 
 
-                      INNER JOIN sys.columns AS c 
 
-                              ON sc.object_id = c.object_id 
 
-                                 AND c.column_id = sc.column_id 
 
-               WHERE  s.object_id > 100 
 
-                      AND s.object_id = Object_id(@TableName) 
 
-                      AND c.NAME = @ColumnName 
 
-         END 
 
-       OPEN cur 
 
-       FETCH next FROM cur INTO @TableName, @StatsName 
 
-       WHILE @@FETCH_STATUS = 0 
 
-         BEGIN 
 
-             SET @Sql = 'DROP STATISTICS ' + @TableName + '.' 
 
-                        + Quotename(@StatsName) 
 
-             BEGIN try 
 
-                 EXEC Sp_executesql @Sql 
 
-                 PRINT 'Executed ' + @Sql + '..' 
 
-             END try 
 
-             BEGIN catch 
 
-                 SELECT @ERROR = Error_number() 
 
-                 IF @ERROR = 3739 
 
-                   BEGIN try 
 
-                       SET @Sql = 'DROP INDEX ' + @TableName + '.' + Quotename(@StatsName) 
 
-                       EXEC Sp_executesql @Sql 
 
-                       PRINT 'Executed ' + @Sql + '..' 
 
-                   END try 
 
-                 BEGIN catch 
 
-                     SELECT @ERROR = Error_number() 
 
-                     IF @Error = 3723 
 
-                       SET @Sql = 'ALTER TABLE ' + @TableName + ' drop constraint ' + Quotename(@StatsName) 
 
-                     PRINT 'Executing ' + @Sql + '..' 
 
-                     EXEC Sp_executesql @Sql 
 
-                 END catch 
 
-             END catch 
 
-             FETCH next FROM cur INTO @TableName, @StatsName 
 
-         END 
 
-       CLOSE cur 
 
-       DEALLOCATE cur 
 
-   END  
 
 
  |