快速业务通道

SQL点滴3—筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-21

项目需要将access数据库中的数据导入到SQL Server中,需要检验导入后的数据完整性,数据值是否正确。我们使用的是Microsoft SQL Server 2008 Migration Assistant for Access这个工具,次工具专门用来将Access中的数据库导出到SQL Server中,我们的疑虑是这个导出过程中会不会因为认为的原因导致数据错误或者数据之间的关联丢失,看起来有点多次一举,但是还是找方法来做测试。于是就产生了今天的问题,怎么从SQL Server中找出所有的数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息。我找很多资料鼓捣出这个存储过程,先来看看代码:

代码
 1 USE [MIS]
 2 GO
 3
 4 /****** Object:  StoredPRocedure [dbo].[sp_SelectColumnInfor]    Script Date: 09/23/2010 19:00:28 ******/
 5 SET ANSI_NULLS ON
 6 GO
 7
 8 SET QUOTED_IDENTIFIER ON
 9 GO
10
11 create procedure [dbo].[sp_SelectColumnInfor]
12 as
13 declare @table_name varchar(250)
14 --create a temp table
15 create table #tempTable(
16 TABLE_NAME nvarchar(128),
17 COLUMN_NAME nvarchar(128),
18 IS_NULLABLE varchar(3),
19 DATA_TYPE nvarchar(128),
20 CHARACTER_MAXIMUM_LENGTH int,
21 CONSTRAINT_NAME nvarchar(128),
22 )
23 --create a cursor
24 declare curTABLE cursor for
25 select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE=''BASE TABLE''
26 for read only
27
28 open curTABLE
29 fetch next from curTABLE into @table_name
30 while @@FETCH_STATUS =0
31 begin
32 insert into #tempTable
33 select sc.[TABLE_NAME],sc.[COLUMN_NAME],sc.[IS_NULLABLE],sc.[DATA_TYPE],sc.[CHARACTER_MAXIMUM_LENGTH]
34 ,scc.CONSTRAINT_NAME
35  from INFORMATION_SCHEMA.COLUMNS sc
36 left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE scc on sc.COLUMN_NAME=scc.COLUMN_NAME and sc.TABLE_NAME=scc.TABLE_NAME
37 where sc.[TABLE_NAME]=@table_name --order by TABLE_NAME,COLUMN_NAME
38
39 fetch next from curTABLE into @table_name
40 end
41 close curTABLE
42 deallocate curTABLE
43
44 select * from #tempTable order by TABLE_NAME,COLUMN_NAME
45 drop table #tempTable
46 GO

其实很简单的,只要查查INFORMATION_SCHEMA.COLUMNS , INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE这两个系统视图的功能就能明白。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号