是否有SQL方法可以找出架构中的哪些列完全充满空值?我知道几个表中的某些字段不会被应用程序使用,并且会被删除,但是我想查看是否存在一种自动方法/脚本来在整个数据库中找到该字段/脚本来寻找代码审查的候选人/可能的删除。
如果重要,请在x86上运行SQL Server 2005。
提前致谢!
create table #SuspectColumns ( TABLE_SCHEMA sysname, TABLE_NAME sysname, COLUMN_NAME sysname ) declare csrColumns cursor fast_forward for select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE = 'YES' declare @TABLE_SCHEMA sysname, @TABLE_NAME sysname, @COLUMN_NAME sysname, @sql nvarchar(max) open csrColumns while (1=1) begin fetch next from csrColumns into @TABLE_SCHEMA, @TABLE_NAME, @COLUMN_NAME if @@FETCH_STATUS<>0 break set @sql = N'if not exists(select 1 from ' + QUOTENAME(@TABLE_SCHEMA) + N'.' + QUOTENAME(@TABLE_NAME) + N' where ' + QUOTENAME(@COLUMN_NAME) + N'is not null) insert into #SuspectColumns values (''' + @TABLE_SCHEMA + N''',''' + @TABLE_NAME + N''',''' + @COLUMN_NAME + N''')' exec sp_executesql @sql end /* while */ close csrColumns deallocate csrColumns select * from #SuspectColumns drop table #SuspectColumns