列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息,并导出到Excel 中
SET ANSI_NULLS OFF
GO
SET NOCOUNT ON
GO
SET LANGUAGE @#Simplified Chinese@#
go
DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)
SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t
FROM syscolumns a, systypes b,sysobjects d
WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype=@#U@#
DECLARE read_cursor CURSOR
FOR SELECT TableName,FieldName FROM #t
SELECT TOP 1 @#_TableName @# TableName,
@#FieldName @# FieldName,@#TypeName @# TypeName,
@#Length@# Length,@#IS_NULL@# IS_NULL,
@#MaxLenUsed@# AS MaxLenUsed,@#Sample Value @# Sample,
@#Comment @# Comment INTO #tc FROM #t
OPEN read_cursor
FETCH NEXT FROM read_cursor INTO @tbl,@fld
WHILE (@@fetch_status <> -1) --- failes
BEGIN
IF (@@fetch_status <> -2) -- Missing
BEGIN
SET @sql=N@#SET @maxlen=(SELECT max(len(cast(@#+@fld+@# as nvarchar))) FROM @#+@tbl+@#)@#
--PRINT @sql
EXEC SP_EXECUTESQL @sql,N@#@maxlen int OUTPUT@#,@maxlen OUTPUT
--print @maxlen
SET @sql=N@#SET @sample=(SELECT TOP 1 cast(@#+@fld+@# as nvarchar) FROM @#+@tbl+@# WHERE len(cast(@#+@fld+@# as nvarchar))=@#+convert(nvarchar(5),@maxlen)+@#)@#
EXEC SP_EXECUTESQL @sql,N@#@sample varchar(30) OUTPUT@#,@sample OUTPUT
--for quickly
--SET @sql=N@#SET @sample=convert(varchar(20),(SELECT TOP 1 @#+@fld+@# FROM @#+
--@tbl+@# order by 1 desc ))@#
PRINT @sql
print @sample
print @tbl
EXEC SP_EXECUTESQL @sql,N@#@sample nvarchar(30) OUTPUT@#,@sample OUTPUT
INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,
convert(nchar(20),ltrim(ISNULL(@sample,@# @#))) as Sample,@# @# Comment FROM #t where TableName=@tbl and FieldName=@fld
END
FETCH NEXT FROM read_cursor INTO @tbl,@fld
END
CLOSE read_cursor
DEALLOCATE read_cursor
GO
SET ANSI_NULLS ON
GO
SET NOCOUNT OFF
GO
select count(*) from #t
DROP TABLE #t
GO
select count(*)-1 from #tc
select * into ##tx from #tc order by tablename
DROP TABLE #tc
--select * from ##tx
declare @db nvarchar(60),@sql nvarchar(3000)
set @db=db_name()
--请修改用户名和口令 导出到Excel 中
set @sql=@#exec master.dbo.xp_cmdshell @#@#bcp ..dbo.##tx out c:\@#+@db+@#_exp.xls -w -C936 -
Usa -Psa @#@#@#
print @sql
exec(@sql)
GO
DROP TABLE ##tx
GO
↓相关文章:
- · 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- · SRVCTL 命令详细说明文档(原译)
- · GROW THAT DBA CAREER
- · Character set字符集
- · 小议MSSQL Server 2000的安全及管理
- · 当SQL Server数据库崩溃时如何恢复
- · 使用rman复制数据库
- · 在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法
- · 两台SqlServer数据同步解决方案
- · 使用跟踪事件10046
- · PL/SQL DEVELOPER 6 模板格式设计应用指南(原译)
- · 如何将数据库中被锁表解锁
- · MSDE安装和配置提示
- · 数据库字典简易更新方法
- · 根据排序定义表排序数据
- · SQL Server 2000数据库连接
- · SQL SERVICE 2000的全文搜索的整理
- · PL/SQL DEVELOPER 6对象比较功能说明(原创)
- · PL/SQL DEVELOPER 6会话管理(原创)
- · PL/SQL DEVELOPER 相关资源网址
- · sql server锁机制
- · 基于SharePoint Portal Server 2003的微软企业门户加速信息搜索、提升员工效率
- · sql server中扩展存储过程随笔(几个有用的PROCEDURE小总结)
- · 根据当月数据库自动生成下个月数据库--3
- · 根据当月数据库自动生成下个月数据库--1
- · 无规律自定义分段的分类汇总+交叉表处理
- · 新旧系统切换中 资料内码 处理
- · SQL注入与ASP木马上传
- · 存储过程与SQL语句的一个故事
- · SQL Server连接中三个最常见错误原因分析
- · 实现数据分类汇总的SQL语句
- · SQLServer常见问题应对
- · XML和数据库之间的关系
- · 数据库对象统计分析技术应用
- · 视图在数据库中的应用分析
- · 关于Freelists和Freelist Groups的研究(修订版)- freelists存储在哪儿
- · 关于Freelists和Freelist Groups的研究(修订版)- 什么是freelists
- · SQL Server应用程序中的高级SQL注入
- · 登录口令加密函数、用户登录主Form实现方法和具体代码
- · 一个供查询用的datawindow
- · SQLSERVER中快速获海量数据的记录总数
- · 基于数据库、OLE及VBA技术的《计算机文化基础》集成考试系统
- · SQLSERVER数据仓库的构建与分析
- · 使用sql的一些tip
- · 四种数据库,取随机记录的方法

