用Excel建立SQL数据库数据字典和报表的脚本_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

用Excel建立SQL数据库数据字典和报表的脚本[组图]

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:报表脚本组图建立
黑客防线网安网讯:  这是一个很好的问题。解决这个问题最简单的方法是从扩展属性中获得值到物理表中,因此你可以很容易通过Microsoft Excel、报表服务或其它任何报表工具导出数据。   要启动这个过程,你...

  这是一个很好的问题解决这个问题最简单的方法是从扩展属性中获得值到物理表中因此你可以很容易通过Microsoft Excel、报表服务或其它任何报表工具导出数据

  要启动这个过程你需要配置下面列出的存储过程dbo.sp_get_extendedproperty。

   [dbo].[sp_get_extendedproperty]
  USE [master]
  GO
  CREATE PROCEDURE [dbo].[sp_get_extendedproperty]
  @databasename varchar(128) = NULL
  as
  BEGIN
  SET NOCOUNT ON
  SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  IF @databasename IS NULL
  SET @databasename = db_name()
  DECLARE @sqltext nvarchar(4000)
  IF object_id(N'tempdb.dbo.##temp___DataDictionary') IS NOT NULL
  DROP TABLE ##temp___DataDictionary
  IF object_id(N'tempdb.dbo.##temp___DataDictionary_schema') IS NOT NULL
  DROP TABLE ##temp___DataDictionary_schema
  CREATE TABLE ##temp___DataDictionary(
  [tableschema] varchar(128) NULL,
  [tablename] varchar(128) NULL,
  [columnname] varchar(128) NULL,
  [xtype] varchar(8) NULL,
  [description] nvarchar(4000) NULL
  )
  CREATE TABLE ##temp___DataDictionary_schema(
  [tableschema] varchar(128),
  [tablename] varchar(128) NULL,
  )
  -- Deploy Database Property
  SET @sqltext = 'INSERT INTO ##temp___DataDictionary ([description], [xtype]) SELECT cast(value as nvarchar(4000)), ''D'' FROM '
  + @databasename + '.sys.fn_listextendedproperty(default, default, default, default, default, default, default)'
  EXECUTE (@sqltext)
  -- Get table level data dictionary
  SET @sqltext = 'INSERT INTO ##temp___DataDictionary_schema SELECT DISTINCT TABLE_SCHEMA, TABLE_NAME FROM '
  + @databasename + '.INFORMATION_SCHEMA.TABLES'
  EXECUTE(@sqltext)
  DECLARE table_cursor CURSOR FOR
  SELECT DISTINCT [tableschema] FROM ##temp___DataDictionary_schema
  DECLARE @TABLE_SCHEMA VARCHAR(128)
  OPEN table_cursor
  FETCH NEXT FROM table_cursor INTO @TABLE_SCHEMA
  WHILE @@FETCH_STATUS = 0
  BEGIN
  SET @sqltext = 'INSERT INTO ##temp___DataDictionary ([tableschema], [tablename],[description], [xtype]) SELECT '
  + '''' + @TABLE_SCHEMA + '''' + + ', objname, cast(value as nvarchar(4000)), ''U'' FROM '
  + @databasename + '.sys.fn_listextendedproperty (NULL, ''schema'', '
  + '''' + @TABLE_SCHEMA + ''''+ ', ''table'', default, NULL, NULL)'
  EXECUTE(@sqltext)
  FETCH NEXT FROM table_cursor INTO @TABLE_SCHEMA
  END
  CLOSE table_cursor
  DEALLOCATE table_cursor
  CREATE TABLE ##temp___DataDictionary_keys(
  [tableschema] varchar(128) NULL,
  [tablename] varchar(128) NULL,
  [columnname] varchar(128) NULL,
  [xtype] varchar(8) NULL
  )
  -- Populate all the key types
  SET @sqltext = 'INSERT INTO ##temp___DataDictionary_keys SELECT U.TABLE_SCHEMA,U.TABLE_NAME, U.COLUMN_NAME, xtype '
  + 'FROM ' + @databasename + '.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE U '
  + 'JOIN ' + @databasename + '.sys.sysobjects O ON U.CONSTRAINT_NAME = O.name WHERE O.xtype in (''F'',''PK'')'
  EXECUTE(@sqltext)
  -- Get column level
  DECLARE @TABLE_NAME varchar(128)
  DECLARE column_cursor CURSOR FAST_FORWARD FOR
  SELECT [tableschema], [tablename] FROM ##temp___DataDictionary_schema
  OPEN column_cursor
  FETCH NEXT FROM column_cursor INTO @TABLE_SCHEMA, @TABLE_NAME
  WHILE @@FETCH_STATUS = 0
  BEGIN
  -- display all columns under MyTable

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-9762-1.html
网站维护教程更新时间:2012-03-21 02:25:31  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer