--可以参考一下下面的,
--建立表
DECLARE CUR_A CURSOR FOR  SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U'  and name not in('dtproperties','B_COL_DISTRIBUTE')
DECLARE @TABLENAME VARCHAR(50)
DECLARE @TMPSTR VARCHAR(8000)
declare @TMPSTR2 Varchar(8000)
open CUR_A
 
FETCH  NEXT  FROM CUR_A INTO  @TABLENAME
SET @TMPSTR=''
SET @TMPSTR2=''
WHILE @@FETCH_STATUS = 0 BEGIN
SET @TMPSTR=@TMPSTR+@TABLENAME +' VARCHAR(2) NULL,'+CHAR(13) SET @TMPSTR2=@TMPSTR2+
'CONSTRAINT [DF_B_COL_DISTRIBUTE_'+@TABLENAME+'] DEFAULT ('''') FOR ['+@TABLENAME+'],'
 +CHAR(13)
  FETCH  NEXT  FROM CUR_A INTO @TABLENAME  
END
SET @TMPSTR=('
create table B_COL_DISTRIBUTE
(
COL_NAME VARCHAR(50) NULL,
COL_MEMO VARCHAR(50) NULL,
'+SUBSTRING(@TMPSTR,1,(LEN(@TMPSTR)-2))+')'+char(13)+
'ALTER TABLE B_COL_DISTRIBUTE WITH NOCHECK ADD 
CONSTRAINT [DF_B_COL_DISTRIBUTE_COL_NAME] DEFAULT ('''') FOR [COL_NAME], 
CONSTRAINT [DF_B_COL_DISTRIBUTE_COL_MEMO] DEFAULT ('''') FOR [COL_MEMO],'+char(13)+
+SUBSTRING(@TMPSTR2,1,(LEN(@TMPSTR2)-2))+ char(13) )EXEC ('if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[B_COL_DISTRIBUTE]'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1)
drop table [dbo].[B_COL_DISTRIBUTE]
')
EXECUTE ( @TMPSTR)
--PRINT @TMPSTR
CLOSE CUR_A
DEALLOCATE CUR_A
go---插入记录
DECLARE CUR_B CURSOR FOR  
SELECT DISTINCT 
      t2.name AS COLNAME, CONVERT(varchar, t4.[value]) AS COLMEMO
FROM dbo.sysproperties t4 RIGHT OUTER JOIN
      dbo.systypes t3 RIGHT OUTER JOIN
      dbo.syscolumns t2 ON t3.xtype = t2.xtype RIGHT OUTER JOIN
      dbo.sysobjects t1 ON t2.id = t1.id ON t4.id = + t1.id AND 
      t4.smallid = + t2.colid 
WHERE (t1.xtype = 'U' and t1.name  not in('dtproperties','B_COL_DISTRIBUTE'))
DECLARE @COL_NAME VARCHAR(1000)
DECLARE @COL_MEMO VARCHAR(1000)
 
DECLARE @TBL_NAME VARCHAR(1000)
open CUR_B
 
FETCH  NEXT  FROM CUR_B INTO  @COL_NAME,@COL_MEMO
 
WHILE @@FETCH_STATUS = 0 BEGIN
 
INSERT INTO B_COL_DISTRIBUTE (COL_NAME,COL_MEMO) VALUES (@COL_NAME,isnull(@COL_MEMO,''))
 
DECLARE CUR_C CURSOR FOR 
SELECT t1.name 
FROM dbo.sysobjects t1 INNER JOIN
      dbo.syscolumns t2 ON t1.id = t2.id INNER JOIN
      dbo.systypes t3 ON t2.xtype = t3.xtype LEFT OUTER JOIN
      dbo.sysproperties t4 ON t1.id = t4.id AND t2.colid = t4.smallid
WHERE (t1.xtype = 'U') and (t2.name=@COL_NAME  ) and  t1.name  not in('dtproperties','B_COL_DISTRIBUTE') 
open CUR_C
FETCH  NEXT  FROM CUR_C INTO @TBL_NAME
WHILE @@FETCH_STATUS = 0 BEGIN
exec('UPDATE B_COL_DISTRIBUTE SET  '+@TBL_NAME+'=''√'' WHERE COL_NAME='''+@COL_NAME+'''')
FETCH  NEXT  FROM CUR_C INTO @TBL_NAME
END
CLOSE CUR_C
DEALLOCATE CUR_C  FETCH  NEXT  FROM CUR_B INTO   @COL_NAME,@COL_MEMO
END
CLOSE CUR_B
DEALLOCATE CUR_B