自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL點滴之篩選數(shù)據(jù)列的信息

數(shù)據(jù)庫 SQL Server
前面兩次點滴分享中,筆者與我們分享了SET QUOTED_IDENTIFIER 的作用,并給我們介紹了一個簡單的字符串分割函數(shù)。這一次,筆者為我們介紹怎么從SQL Server中找出所有的數(shù)據(jù)列的類型,字段大小,是否可為空,是否是主鍵,約束等等信息。

前面兩次點滴分享中,筆者與我們分享了SET QUOTED_IDENTIFIER 的作用,并給我們介紹了一個簡單的字符串分割函數(shù)。這一次,筆者為我們介紹怎么從SQL Server中找出所有的數(shù)據(jù)列的類型,字段大小,是否可為空,是否是主鍵,約束等等信息。

項目需要將Access數(shù)據(jù)庫中的數(shù)據(jù)導入到SQL Server中,需要檢驗導入后的數(shù)據(jù)完整性,數(shù)據(jù)值是否正確。我們使用的是Microsoft SQL Server 2008 Migration Assistant for Access這個工具,次工具專門用來將Access中的數(shù)據(jù)庫導出到SQL Server中,我們的疑慮是這個導出過程中會不會因為認為的原因?qū)е聰?shù)據(jù)錯誤或者數(shù)據(jù)之間的關(guān)聯(lián)丟失,看起來有點多次一舉,但是還是找方法來做測試。于是就產(chǎn)生了今天的問題,怎么從SQL Server中找出所有的數(shù)據(jù)列的類型,字段大小,是否可為空,是否是主鍵,約束等等信息。我找很多資料鼓搗出這個存儲過程,先來看看代碼:

  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. select * from #tempTable order by TABLE_NAME,COLUMN_NAME  
  44. drop table #tempTable  
  45. GO 

 
其實很簡單的,只要查查INFORMATION_SCHEMA.COLUMNS , INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE這兩個系統(tǒng)視圖的功能就能明白。來看看執(zhí)行這個存儲過程得到的結(jié)果:

 

 下次介紹Microsoft SQL Server 2008 Migration Assistant for Access這個工具的用法。

 原文鏈接:http://www.cnblogs.com/tylerdonet/archive/2010/09/23/1833381.html

【編輯推薦】

  1. SQL點滴之SET QUOTED_IDENTIFIER OFF語句的作用
  2. SQL點滴之一個簡單的字符串分割函數(shù)
  3. 微博 請問你是怎么優(yōu)化數(shù)據(jù)庫的?
  4. MySQL數(shù)據(jù)庫的優(yōu)化(上)單機MySQL數(shù)據(jù)庫的優(yōu)化
  5. MySQL數(shù)據(jù)庫的優(yōu)化(下)MySQL數(shù)據(jù)庫的高可用架構(gòu)方案

 

責任編輯:艾婧 來源: 博客園
相關(guān)推薦

2011-05-11 09:49:32

線程等待SQL Server

2011-06-23 14:00:51

SQL點滴

2011-09-13 10:25:05

數(shù)據(jù)庫點滴

2011-09-09 10:10:13

SQL數(shù)據(jù)庫點滴

2011-08-02 13:04:40

SQL Server

2011-05-06 16:36:48

SQL備份還原

2011-04-27 16:09:48

SQL ServerSSIS

2011-04-27 14:27:11

SQL Server

2011-10-09 16:40:50

T-SQL

2011-08-03 13:32:00

SQL Server優(yōu)化

2011-04-20 11:11:33

SQLSET QUOTED_

2011-04-28 09:49:56

SQLwith子查詢

2011-04-22 15:00:22

SQLwin7登錄

2011-04-21 13:49:29

dementionSQL

2010-07-22 10:38:12

SQL Server所

2011-04-27 16:34:06

withSQL Server

2011-02-25 17:00:25

SQL閏年

2011-04-27 13:21:59

SQL Serverattach

2010-09-06 11:57:33

sql server語句

2011-04-27 15:55:16

點贊
收藏

51CTO技術(shù)棧公眾號