SQL server 系统查询(数据字典生成、数据库表数量查询、数据表关系)

目录

一、SQL 数据表生成网页版的数据字典方法

二、SQL缓存清理

三、查询数据库中存在数据表和数据量

四、数据库内存设置

五、数据库表关系查询


一、SQL 数据表生成网页版的数据字典方法

执行如下SQl,输出文本格式的数据结果,复制到Txt中,去除虚线,修改后缀名为Html即可

​
SET  NOCOUNT ON
DECLARE @TableName   NVARCHAR (500)

DECLARE
   Tbls CURSOR FOR
      SELECT DISTINCT tb.name
        FROM sys.tables as tb
      ORDER BY tb.name

OPEN Tbls
PRINT '<!DOCTYPE html>'
PRINT '<html>'
PRINT '<head>'
PRINT N'<title>数据库字典</title>'
PRINT '<style type="text/css">'
PRINT 'body{margin:0; font:11pt "arial", "微软雅黑"; cursor:default;}'
PRINT '.tableBox{margin:10px auto; padding:0px; width:1200px; height:auto; background:#FBF5E3; border:1px solid #45360A}'
PRINT '.tableBox h3 {font-size:12pt; height:auto; line-height:30px; background:#45360A; padding:0px 0px 0px 15px; color:#FFF; margin:0px; text-align:left }'
PRINT '.tableBox caption {font-size:12pt; height:auto; line-height:30px; background:#45360A; color: #FFF; text-align: center; font-weight: bold; }'
PRINT '.tableBox table {width:1200px; padding:0px;border-spacing: 0; border-collapse: collapse;}'
PRINT '.tableBox th {height:25px; border-top:1px solid #FFF; border-left:1px solid #FFF; background:#F7EBC8; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
PRINT '.tableBox td {height:25px; padding-left:10px; border-top:1px solid #FFF; border-left:1px solid #FFF; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
PRINT '</style>'
PRINT '</head>'
PRINT '<body>'
FETCH NEXT FROM Tbls   INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN
   PRINT '<div class="tableBox">'
   PRINT '<table>'
   PRINT N'<caption>表 ' + @TableName + '</caption>';
   PRINT '<tr>'
   PRINT N'<th>字段名称</th>'
   PRINT N'<th>描述</th>'
   PRINT N'<th>主键</th>'
   PRINT N'<th>外键</th>'
   PRINT N'<th>类型</th>'
   PRINT N'<th>长度</th>'
   PRINT N'<th>数值精度</th>'
   PRINT N'<th>小数位数</th>'
   PRINT N'<th>允许为空</th>'
   PRINT N'<th>计算列</th>'
   PRINT N'<th>标识列</th>'
   PRINT N'<th>默认值</th>'

   SELECT '</tr><tr>',
          '<td>' + CAST (clmns.name AS VARCHAR (35)) + '</td>',
            '<td>'
          + ISNULL (CAST (exprop.value AS NVARCHAR (500)), '')
          + '</td>',
            '<td>'
          + CAST (ISNULL (idxcol.index_column_id, 0) AS VARCHAR (20))
          + '</td>',
            '<td>'
          + CAST (
               ISNULL (
                  (SELECT TOP 1 1
                     FROM sys.foreign_key_columns AS fkclmn
                    WHERE     fkclmn.parent_column_id = clmns.column_id
                          AND fkclmn.parent_object_id = clmns.object_id),
                  0) AS VARCHAR (20))
          + '</td>',
          '<td>' + CAST (udt.name AS CHAR (15)) + '</td>',
            '<td>'
          + CAST (
               CAST (
                  CASE
                     WHEN     typ.name IN (N'nchar', N'nvarchar')
                          AND clmns.max_length <> -1
                     THEN
                        clmns.max_length / 2
                     ELSE
                        clmns.max_length
                  END AS INT) AS VARCHAR (20))
          + '</td>',
            '<td>'
          + CAST (CAST (clmns.precision AS INT) AS VARCHAR (20))
          + '</td>',
          '<td>' + CAST (CAST (clmns.scale AS INT) AS VARCHAR (20)) + '</td>',
          '<td>' + CAST (clmns.is_nullable AS VARCHAR (20)) + '</td>',
          '<td>' + CAST (clmns.is_computed AS VARCHAR (20)) + '</td>',
          '<td>' + CAST (clmns.is_identity AS VARCHAR (20)) + '</td>',
            '<td>'
          + isnull (CAST (cnstr.definition AS VARCHAR (20)), '')
          + '</td>'
     FROM sys.tables AS tbl
          LEFT JOIN sys.all_columns AS clmns
             ON clmns.object_id = tbl.object_id
          LEFT JOIN sys.indexes AS idx
             ON idx.object_id = clmns.object_id AND 1 = idx.is_primary_key
          LEFT JOIN sys.index_columns AS idxcol
             ON     idxcol.index_id = idx.index_id
                AND idxcol.column_id = clmns.column_id
                AND idxcol.object_id = clmns.object_id
                AND 0 = idxcol.is_included_column
          LEFT JOIN sys.types AS udt ON udt.user_type_id = clmns.user_type_id
          LEFT JOIN sys.types AS typ
             ON     typ.user_type_id = clmns.system_type_id
                AND typ.user_type_id = typ.system_type_id
          LEFT JOIN sys.default_constraints AS cnstr
             ON cnstr.object_id = clmns.default_object_id
          LEFT JOIN sys.extended_properties exprop
             ON     exprop.major_id = clmns.object_id
                AND exprop.minor_id = clmns.column_id
                AND exprop.name = 'MS_Description'
    WHERE tbl.name = @TableName
   ORDER BY clmns.column_id ASC

   PRINT '</tr></table>'
   PRINT '</div>'
   FETCH NEXT FROM Tbls   INTO @TableName
END

PRINT '</body></HTML>'
CLOSE Tbls
DEALLOCATE Tbls

​

二、SQL缓存清理

--清除存储过程缓存  
DBCC FREEPROCCACHE 
--清除会话缓存 
DBCC FREESESSIONCACHE 
--清除系统缓存 
DBCC FREESYSTEMCACHE('All') 
--清除所有缓存 
DBCC DROPCLEANBUFFERS
GO

三、查询数据库中存在数据表和数据量

--查询数据库中表的数据量
SELECT a.name,b.rows FROM sysobjects a  
INNER JOIN sysindexes b ON a.id=b.id   
WHERE b.indid IN(0,1) AND a.Type='u'  
ORDER BY b.rows desc

四、数据库内存设置

--打开高级配置 
exec sp_configure'show advanced options', 1 
GO
--设置最大内存MB  2G
exec sp_configure 'max server memory', 2048 
EXEC ('RECONFIGURE' )
--设置执行时间
WAITFOR DELAY '00:00:10'
--设置最大内存MB  20G
EXEC  sp_configure 'max server memory', 20480 
EXEC ('RECONFIGURE' )
GO
--关闭高级配置 
exec sp_configure'show advanced options',0 
GO

五、数据库表关系查询

SELECT
    fk.name 'FK Name',
    tp.name 'Parent table',
    cp.name, cp.column_id,
    tr.name 'Refrenced table',
    cr.name, cr.column_id
FROM 
    sys.foreign_keys fk
INNER JOIN 
    sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN 
    sys.tables tr ON fk.referenced_object_id = tr.object_id
INNER JOIN 
    sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN 
    sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN 
    sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY
    tp.name, cp.column_id

猜你喜欢

转载自blog.csdn.net/CONSOLE11/article/details/107109041