1. -- 表结构查询
  2. SELECT
  3. 表名 = case when a.colorder=1 then d.name else '' end,
  4. 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
  5. 字段序号 = a.colorder,
  6. 字段名 = a.name,
  7. 标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
  8. 主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
  9. SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
  10. 类型 = b.name,
  11. 占用字节数 = a.length,
  12. 长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
  13. 小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
  14. 允许空 = case when a.isnullable=1 then '√'else '' end,
  15. 默认值 = isnull(e.text,''),
  16. 字段说明 = isnull(g.[value],'')
  17. FROM syscolumns a left join systypes b
  18. on a.xusertype=b.xusertype
  19. inner join sysobjects d
  20. on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
  21. left join syscomments e
  22. on a.cdefault=e.id
  23. left join sys.extended_properties g
  24. on a.id=g.major_id and a.colid=g.minor_id
  25. left join sys.extended_properties f
  26. on d.id=f.major_id and f.minor_id=0
  27. where d.name='tableName' --如果只查询指定表,加上此条件
  28. order by a.id,a.colorder
  29.  
  30. -------------------------------------------------------------------------------------------------
  31. --查看数据库中所有外键
  32. select oMain.name AS [主表名称]
  33. ,oSub.name AS [子表名称]
  34. ,fk.name AS [外键名称]
  35. ,MainCol.name AS [主表列名]
  36. ,SubCol.name AS [子表列名]
  37. from sys.foreign_keys fk
  38. JOIN sys.all_objects oSub ON (fk.parent_object_id = oSub.object_id)
  39. JOIN sys.all_objects oMain ON (fk.referenced_object_id = oMain.object_id)
  40. JOIN sys.foreign_key_columns fkCols ON (fk.object_id = fkCols.constraint_object_id)
  41. JOIN sys.columns SubCol ON (oSub.object_id = SubCol.object_id
  42. AND fkCols.parent_column_id = SubCol.column_id)
  43. JOIN sys.columns MainCol ON (oMain.object_id = MainCol.object_id
  44. AND fkCols.referenced_column_id = MainCol.column_id)
  45.  
  46. ------------------------------------------------------------------------------------
  47.  
  48. --(导出扩展属性脚本)
  49. SELECT 表名 = d.name,字段名 = a.name, 字段说明 = isnull(g.[value],'')
  50. ,'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N'''+CONVERT(VARCHAR(MAX),g.[value])
  51. +''',@level0type=N''SCHEMA'',@level0name=N''dbo'',@level1type=N''TABLE'',@level1name=N'''+CONVERT(VARCHAR(MAX),d.name)
  52. +''',@level2type=N''COLUMN'',@level2name=N'''+CONVERT(VARCHAR(MAX),a.name)+''''
  53. FROM syscolumns a left join systypes b on a.xusertype=b.xusertype
  54. inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
  55. left join syscomments e on a.cdefault=e.id
  56. left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
  57. WHERE g.[value] IS NOT NULL
  58. ORDER BY d.name,a.name
  59.  
  60. ----------------------------------------------------------------------
  61.  
  62. --当前数据库表大小及行数
  63. SELECT SCHEMA_NAME(tbl.schema_id) [Schema],tbl.name AS [TableName],
  64. (CAST(ISNULL((select 8 * SUM(CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END)
  65. FROM sys.indexes as i
  66. JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
  67. JOIN sys.allocation_units as a ON a.container_id = p.partition_id
  68. where i.object_id = tbl.object_id),0.0)*1.0/1024 AS DECIMAL(18,3))) AS [DataSpaceUsed(MB)],SI.[rows]
  69. FROM sys.tables AS tbl LEFT JOIN sys.sysindexes si ON tbl.object_id=si.id AND si.indid IN(0,1)
  70. ORDER BY [Schema],[DataSpaceUsed(MB)] DESC
  71.  
  72. -----------------------------------------------------------------------------------------
  73.  
  74. -- 查看表中的自增列是否为主键
  75. SELECT
  76. 表名= D.NAME,
  77. 列名= A.NAME,
  78. 是否自增= CASE WHEN COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 THEN '√'ELSE '' END,
  79. 主键= CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= 'PK ' AND PARENT_OBJ=A.ID AND NAME IN (
  80. SELECT NAME FROM SYSINDEXES WHERE INDID IN(
  81. SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√' ELSE '' END
  82. FROM SYSCOLUMNS A
  83. LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE
  84. INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND D.XTYPE= 'U' AND D.NAME <> 'DTPROPERTIES '
  85. where COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1
  86.  
  87. ------------------------------------------------------------------
  88.  
  89. --各表对象下的其他对象
  90. select t1.[object_id],t1.[type],t1.name,t2.[object_id],t2.[type],t2.name
  91. from sys.objects t1
  92. inner join sys.objects t2 on t1.[object_id]=t2.parent_object_id
  93. order by t1.[type],t1.name,t2.[type],t2.name
  94.  
  95. select t1.id,t1.xtype,t1.name,t2.id,t2.xtype,t2.name
  96. from sys.sysobjects t1
  97. inner join sys.sysobjects t2 on t1.id=t2.parent_obj
  98. order by t1.xtype,t1.name,t2.xtype,t2.name
  99.  
  100. -----------------------------------------------------------------------------
  101. --唯一键约束
  102. SELECT tbl.name tab,i.name AS [Name]
  103. FROM sys.tables AS tbl
  104. INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
  105. WHERE (i.is_primary_key + 2*i.is_unique_constraint=2) and SCHEMA_NAME(tbl.schema_id)='dbo'
  106. ORDER BY [Name] ASC
  107.  
  108. ------------------------------------------------------------------------------------
  109. --查看数据库约束
  110. SELECT OBJECT_NAME(parent_object_id) as TableName,name,definition
  111. FROM sys.default_constraints ORDER BY TableName,name
  112.  
  113. ---------------------------------------------------------------------------------------
  114.  
  115. --表各列约束
  116. select OBJECT_NAME(t2.object_id) as TabName,t2.name as ColumnName,t1.name as [Constraint]
  117. from sys.default_constraints t1
  118. inner join sys.columns t2
  119. on t1.parent_object_id=t2.object_id and t1.parent_column_id=t2.column_id
  120. order by TabName,ColumnName,[Constraint]
  121.  
  122. ----------------------------------------------------------------------------------
  123.  
  124. -- 当前数据库文件增长设置情况
  125. SELECT Name, FileName
  126. , CAST((Size * 8 / 1024) AS varchar(10)) + 'MB' AS FileSize
  127. , MaxSize = CASE MaxSize WHEN -1 THEN 'Unlimited' ELSE CAST((Maxsize / 128) AS varchar(10)) + 'MB' END
  128. FROM sys.sysfiles;
  129.  
  130. -- 所有数据库文件增长设置情况
  131. select DB_NAME(database_id) as dbName,file_id,(size*8/1024) as [size(mb)]
  132. ,case when is_percent_growth = 1 then '10%' else CONVERT(varchar(10),growth*8/1024)+'M' end as growth
  133. ,type_desc,physical_name
  134. from sys.master_files
  135. where state = 0 --and database_id=DB_id()
  136.  
  137. -----------------------------------------------------------------------------------------------------------------
  138.  
  139. --数据库的一些关键属性
  140. SELECT db.[name] AS [Database Name], db.recovery_model_desc AS [Recovery Model],
  141. db.log_reuse_wait_desc AS [Log Reuse Wait Description],
  142. ls.cntr_value AS [Log Size (KB)], lu.cntr_value AS [Log Used (KB)],
  143. CAST(CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)AS DECIMAL(18,2)) *
  144. 100 AS [Log Used %], db.[compatibility_level] AS [DB Compatibility Level],
  145. db.page_verify_option_desc AS [Page Verify Option], db.is_auto_create_stats_on,
  146. db.is_auto_update_stats_on, db.is_auto_update_stats_async_on,
  147. db.is_parameterization_forced,
  148. db.snapshot_isolation_state_desc, db.is_read_committed_snapshot_on,
  149. is_auto_shrink_on, is_auto_close_on
  150. FROM sys.databases AS db WITH (NOLOCK)
  151. INNER JOIN sys.dm_os_performance_counters AS lu WITH (NOLOCK)
  152. ON db.name = lu.instance_name
  153. INNER JOIN sys.dm_os_performance_counters AS ls WITH (NOLOCK)
  154. ON db.name = ls.instance_name
  155. WHERE lu.counter_name LIKE N'Log File(s) Used Size (KB)%'
  156. AND ls.counter_name LIKE N'Log File(s) Size (KB)%'
  157. AND ls.cntr_value > 0 OPTION (RECOMPILE);
  158.  
  159. ----------------------------------------------------------------------------------------
  160.  
  161. --最近一周内数据库备份情况
  162. SELECT user_name AS [User]
  163. ,server_name AS [Server]
  164. ,database_name AS [Database]
  165. ,recovery_model AS RecoveryModel
  166. ,case type when 'D' then '数据库'
  167. when 'I' then '差异数据库'
  168. when 'L' then '日志'
  169. when 'F' then '文件或文件组'
  170. when 'G' then '差异文件'
  171. when 'P' then '部分'
  172. when 'Q' then '差异部分' else type end as [backupType]
  173. ,convert(numeric(10,2),backup_size/1024/1024) as [Size(M)]
  174. ,backup_start_date AS backupStartTime
  175. ,backup_finish_date as backupFinishTime
  176. ,name
  177. ,expiration_date
  178. from msdb.dbo.backupset
  179. where backup_start_date >= DATEADD(D,-7,GETDATE())
  180.  
  181. -----------------------------------------------------------------------
  182.  
  183. -- 作业启用情况和所有者
  184. select a.job_id,a.name,a.enabled,b.name
  185. from msdb.dbo.sysjobs a
  186. inner join master.sys.syslogins b on a.owner_sid=b.sid and a.owner_sid<>'0x01'
  187. order by a.name
  188.  
  189. -- 更改作业所有者
  190. EXEC msdb.dbo.sp_update_job @job_id=N'job_id', @owner_login_name=N'sa'
  191.  
  192. ----------------------------------------------------------------------------------------------
  193. -- 索引 主键/类型/列 情况
  194. ;with tb as(
  195. SELECT tbl.name AS TableName,i.name AS IndexName,clmns.name AS ColumName,i.is_primary_key AS isPrimaryKey,i.type_desc
  196. FROM sys.tables AS tbl
  197. INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
  198. INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0
  199. AND (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0))
  200. AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id)
  201. INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id
  202. WHERE SCHEMA_NAME(tbl.schema_id) = N'dbo'
  203. )
  204. SELECT DISTINCT TableName,IndexName,isPrimaryKey,type_desc
  205. ,STUFF((SELECT ','+ColumName FROM tb B WHERE A.TableName=B.TableName AND A.IndexName=B.IndexName FOR XML PATH('')),1,1,'') AS ColumName
  206. FROM tb A ORDER BY TableName,IndexName,isPrimaryKey,type_desc
  207.  
  208. ----------------------------------------------------------------------------------------------------------------------------------------------------------
  209.  
  210. --表主键对应的列
  211. SELECT OBJECT_NAME(C.id) AS TAB,B.name,A.name AS PrimaryKey ,E.type_desc,fill_factor
  212. FROM SYSCOLUMNS A,SYSOBJECTS B,SYSINDEXES C,SYSINDEXKEYS D , SYS.INDEXES E
  213. WHERE B.xtype = 'PK'
  214. AND B.parent_obj = A.id
  215. AND C.id = A.id
  216. AND B.name = C.name
  217. AND D.id = A.id
  218. AND D.indid = C.indid
  219. AND A.colid = D.colid
  220. AND B.name=E.name
  221. ORDER BY TAB,B.name,PrimaryKey
  222.  
  223. SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
  224. WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME),'ISPRIMARYKEY')=1
  225. --AND TABLE_NAME='TABLE_NAME'
  226.  
  227. -------------------------------------------------------------------------------------------------------
  228.  
  229. --所有表索引对应的键列和包含列
  230. SELECT OBJECT_NAME(t1.id) as tab,t1.name
  231. ,STUFF((SELECT ','+t3.name FROM sys.sysindexkeys t2,sys.syscolumns t3
  232. WHERE t1.indid=t2.indid and t1.id=t2.id and t2.id=t3.id and t2.colid=t3.colid and t2.keyno <> 0
  233. FOR XML PATH('')),1,1,'') AS IndexCols
  234. ,STUFF((SELECT ','+t3.name FROM sys.sysindexkeys t2,sys.syscolumns t3
  235. WHERE t1.indid=t2.indid and t1.id=t2.id and t2.id=t3.id and t2.colid=t3.colid and t2.keyno = 0
  236. FOR XML PATH('')),1,1,'') AS IncludeCols
  237. FROM sys.sysindexes t1
  238. WHERE t1.root is not null
  239. AND EXISTS(SELECT * FROM sys.tables t4 WHERE t1.id=t4.object_id)
  240. ORDER BY tab,IndexCols
  241.  
  242. ------------------------------------------------------------------------------------------------------------
  243. -- 查看表分区情况
  244. select OBJECT_NAME(object_id) as tab,COUNT(partition_number) as part
  245. from sys.partitions
  246. where index_id in(0,1)
  247. and OBJECT_NAME(object_id) not like 'conflict%'
  248. and OBJECT_NAME(object_id) not like 'sys%'
  249. group by object_id order by tab
  250.  
  251. -------------------------------------------------------------------------------------------
  252. -- 查看表备注信息
  253. select distinct
  254. 表名 = case when a.colorder=1 then d.name else '' end
  255. ,表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end
  256. from syscolumns a
  257. inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
  258. inner join sys.extended_properties f on d.id=f.major_id
  259. where f.minor_id=0
  260. --and CHARINDEX('',convert(varchar(max),f.value))<>0
  261.  
  262. -------------------------------------------------------------------------------------------
  263.  
  264. -- 查看表中各列的属性及创建扩展属性脚本(默认架构dbo
  265. select o.name,c.name,p.name,p.value
  266. ,N'EXEC sys.sp_addextendedproperty @name=N'''+p.name+ N''', @value=N'''+convert(nvarchar(4000),p.value)
  267. +N''' , @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N'''
  268. +o.name+ N''', @level2type=N''COLUMN'',@level2name=N'''+c.name+ N'''' as script_addextendedproperty
  269. from sys.sysobjects o
  270. inner join sys.syscolumns c on o.id = c.id
  271. inner join sys.extended_properties p on c.id=p.major_id and c.colid=p.minor_id
  272. where o.xtype = N'U' --and o.name = 'tableName'
  273.  
  274. -------------------------------------------------------------------------------------------
  275.  
  276. -- 查看对象定义脚本
  277. --exec sp_helptext 'object_name'
  278.  
  279. SELECT * from INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION' AND ROUTINE_NAME=''
  280. SELECT * from INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME=''
  281. SELECT * from sys.sql_modules M WHERE EXISTS(SELECT * from sys.triggers T WHERE M.object_id=T.object_id)
  282.  
  283. SELECT o.name,o.type,o.create_date,o.modify_date,sm.definition
  284. FROM sys.sql_modules sm inner join sys.objects o on sm.object_id=o.object_id
  285. ORDER BY o.type,o.name
  286.  
  287. SELECT * from sys.sql_modules
  288. SELECT * from sys.all_sql_modules
  289. SELECT * from sys.system_sql_modules
  290.  
  291. --------------------------------------------------------------------------------------------------------------------

SQLServer 表结构相关查询(快速了解数据库)的更多相关文章

  1. SQL Server 一句Sql把表结构全部查询出来

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  2. 关于SqlServer表结构 2(回归基础)

    关于SqlServer表结构的问题.先来了解一下SqlServer中的数据类型以及它们的用法 整型: 短整型 smallint 整型 int 长整型 bitint 标识列:identity(它是只读的 ...

  3. Bat脚本备份sqlserver 表结构、存储过程、函数、指定表数据

    Bat脚本备份sqlserver 表结构.存储过程.指定表数据: @echo off cd /d %~dp0 ::备份表结构.存储过程和部分配置表的数据 set LogFile=report.log ...

  4. SqlServer表结构查询

    一.前言 近两天项目升级数据迁移,将老版本(sqlserver)的数据迁移到新版本(mysql)数据库,需要整理一个Excel表格出来,映射两个库之间的表格字段,示例如下: Mysql数据库查询表结构 ...

  5. 查询sqlserver 表结构呀

    SQL Server里查询表结构命令 对于SQL Server数据库有两种方法查询表结构 第一种方法 sp_help Accounts_Users     其中Accounts_Users 表示表名 ...

  6. Oracle表结构转换SqlSERVER表结构 脚本

    在审计工作中,有时需要将Oracle的表结构修改后再SqlSERVER中创建表结构,然后将数据导入到SqlSERVER中,在修改表结构的过程中方法狠多.手工修改,最蠢的方法,或者用工具UE批量修改,还 ...

  7. mysql 个人博客应用的建表和相关查询

    一.建表 用户表tb_user create table if not exists tb_user( user_id int auto_increment, ) not null, user_pas ...

  8. Oracle学习(三)SQL高级--表结构相关(建表、约束)

    一.建表语句 CREATE DATABASE(创建数据库) --创建数据库 create database 数据库名字; CREATE TABLE(创建表) --创建表 CREATE TABLE 表名 ...

  9. mysql表结构的查询与修改

    MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row **** ...

随机推荐

  1. ios oc 和 swfit 用dispatch_once 创建单例

    网上已经有方法了,我这里就是抄了下,原文链接 http://bj007.blog.51cto.com/1701577/649413 http://blog.csdn.net/u010124617/ar ...

  2. ABAP 将SAP用户ID转换成用户名

    FORM frm_coverted_name USING usrid TYPE sy-uname                        CHANGING name TYPE adrp-name ...

  3. IP子网划分

    CIDR值: 1.掩码255.0.0.0:/8(A类地址默认掩码) 2.掩码255.128.0.0:/9 3.掩码255.192.0.0:/10 4.掩码255.224.0.0:/11 5.掩码255 ...

  4. Spring@Autowired注解与自动装配

    1   配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...

  5. asp.net mvc htmlHelper

    ASP.NET MVC 3.0 HTML辅助方法   HTML辅助方法(html helper)是用来帮助生成HTML的方法. 1.HTML辅助方法应用实例 ◊ 生成form元素 @using (Ht ...

  6. LeetCode 326 Power of Three

    Problem: Given an integer, write a function to determine if it is a power of three. Could you do it ...

  7. 一个servlet处理来自多个不同页面的请求!

    例如有一个用户表,我们要处理 添加,删除 用户以及登录功能 对应的有add.jsp del.jsp login.jsp等 <body> <!-- login.jsp --> & ...

  8. Android笔记:获取屏幕信息

    像素密度(dpi) float xdpi = getResources().getDisplayMetrics().xdpi;float ydpi = getResources().getDispla ...

  9. 模拟赛1029d1

    第二题[题目描述]给你两个日期,问这两个日期差了多少毫秒.[输入格式]两行,每行一个日期,日期格式保证为"YYYY-MM-DD hh:mm:ss"这种形式.第二个日期时间一定比第一 ...

  10. Codeforces Round #324 (Div. 2) C (二分)

    题目链接:http://codeforces.com/contest/734/problem/C 题意: 玩一个游戏,一开始升一级需要t秒时间,现在有a, b两种魔法,两种魔法分别有m1, m2种效果 ...