/* submitted by: fperkins at: www.SqlServerCentral.com */ DECLARE @table_id int DECLARE @TableName varchar(300) DECLARE @strHTML varchar(8000) DECLARE @strHTML1 varchar(8000) DECLARE @ColumnName varchar(200) DECLARE @ColumnType varchar(200) DECLARE @ColumnLength smallint DECLARE @ColumnComments sql_variant DECLARE @ColumnPrec smallint DECLARE @ColumnScale int DECLARE @ColumnCollation varchar(200) DECLARE @CType sysname DECLARE @CName sysname DECLARE @CPKTable sysname DECLARE @CPKColumn sysname DECLARE @CFKTable sysname DECLARE @CFKColumn sysname DECLARE @CKey smallint DECLARE @CDefault varchar(4000) DECLARE @Populated bit DECLARE @IDesc varchar(60) DECLARE @IRows varchar(11) DECLARE @IReserved varchar(11) DECLARE @IData varchar(11) DECLARE @IIndex varchar(11) DECLARE @IRowData varchar(11) DECLARE @SetOption bit DECLARE @databasename varchar(30) DECLARE @orderCol varchar(30) DECLARE @numeric bit DECLARE @Trigger varchar(50) DECLARE @DBPath varchar(500) DECLARE @ViewName varchar(200) DECLARE @ViewTableDep varchar(200) DECLARE @ViewColDep varchar(200) DECLARE @ViewColDepType varchar(200) DECLARE @ViewColDepLength smallint DECLARE @ViewColDepPrec smallint DECLARE @ViewColDepScale int DECLARE @ViewColDepCollation varchar(200) DECLARE @SPName varchar(200) DECLARE @SPTableDep varchar(200) DECLARE @SPColDep varchar(200) DECLARE @SPColDepType varchar(200) DECLARE @SPColDepLength smallint DECLARE @SPColDepPrec smallint DECLARE @SPColDepScale int DECLARE @SPColDepCollation varchar(200) DECLARE @ParamName sysname DECLARE @ParamDataType varchar(50) DECLARE @ParamType varchar(11) DECLARE @DBLastBackup smalldatetime DECLARE @DBLastBackupDays int DECLARE @UserLogin varchar(30) DECLARE @UserName varchar(30) DECLARE @UserGroup varchar(30) --initialize HTML string SET @strHTML = '' SELECT @strHTML = @strHTML + '' + db_Name() + ' Database Definition
' PRINT @strHTML SELECT @DBPath = (SELECT [filename] FROM master..sysdatabases WHERE [name] = db_Name()) SELECT @strHTML = '
' + db_name() + ' Database Definition

' PRINT @strHTML PRINT '
SERVER SETTINGS | DATABASE SETTINGS | USERS | TABLES | VIEWS | STORED PROCEDURES

' --Table Of Contents SET NOCOUNT ON SELECT @orderCol = 'Description' SELECT @DatabaseName = db_name() SELECT @numeric = 1 IF @DatabaseName <> 'Master' AND NOT EXISTS (select 1 from master..sysdatabases WHERE name = @DatabaseName AND (status & 4) = 4) BEGIN exec sp_dboption @databaseName ,'select into/bulkcopy', 'true' SELECT @SetOption = 1 END IF EXISTS (SELECT 1 FROM master..sysobjects WHERE name = 'space1') DROP TABLE master..space1 CREATE TABLE master..Space1 (name varchar(60), rows varchar(11), reserved varchar(11), data varchar(11), index_size varchar(11), unused varchar(11)) DECLARE @Cmd varchar(255) declare cSpace CURSOR FOR select 'USE ' + @DatabaseName + ' INSERT into master..space1 EXEC sp_spaceUsed ''[' + u.name + '].[' + o.name + ']''' FROM sysobjects o join sysusers u on u.uid = o.uid WHERE type = 'U' AND o.Name <> 'Space1' OPEN cSPACE FETCH cSpace INTO @Cmd WHILE @@FETCH_STATUS =0 BEGIN -- PRINT @Cmd EXECUTE (@Cmd) FETCH cSpace INTO @Cmd END DEALLOCATE cSPace DECLARE cursor_index CURSOR FOR SELECT Description,Rows,Reserved,Data,Index_size,dataPerRows FROM ( SELECT 3 DataOrder, CONVERT(int,CASE @OrderCol WHEN 'Rows' THEN Rows WHEN 'Reserved' THEN SUBSTRING(Reserved, 1,LEN(Reserved)-2) WHEN 'data' THEN SUBSTRING(Data, 1,LEN(Data)-2) WHEN 'index_size' THEN SUBSTRING(Index_size, 1,LEN(index_Size)-2) WHEN 'unused' THEN SUBSTRING(unused, 1,LEN(unused)-2) END) OrderData, name Description, rows, CASE @NUMERIC WHEN 0 THEN reserved ELSE SUBSTRING(reserved, 1, len(reserved)-2) END reserved, CASE @NUMERIC WHEN 0 THEN data ELSE SUBSTRING(data, 1, len(data)-2) END data, CASE @NUMERIC WHEN 0 THEN index_size ELSE SUBSTRING(index_size, 1, len(index_size)-2) END index_size, CASE WHEN Rows = 0 THEN '0' ELSE CONVERT(varchar(11),CONVERT(numeric(10,2),CONVERT(numeric,SUBSTRING(reserved, 1, len(reserved)-2)) /rows*1000)) END DataPerRows FROM master..Space1 ) Stuff ORDER BY DataOrder, OrderData desc, description OPEN cursor_index SET @strHTML = '
' PRINT @strHTML PRINT '' PRINT '' PRINT '' FETCH NEXT FROM cursor_index INTO @IDesc,@IRows,@IReserved,@IData,@IIndex,@IRowData WHILE (@@FETCH_STATUS = 0) BEGIN SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_index INTO @IDesc,@IRows,@IReserved,@IData,@IIndex,@IRowData END CLOSE cursor_index DEALLOCATE cursor_index DECLARE cursor_views_index CURSOR FOR SELECT [name] FROM sysobjects WHERE [xtype] = 'V' AND [category] <> 2 ORDER BY [name] OPEN cursor_views_index FETCH NEXT FROM cursor_views_index INTO @ViewName WHILE (@@FETCH_STATUS = 0) BEGIN SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_views_index INTO @ViewName END CLOSE cursor_views_index DEALLOCATE cursor_views_index DECLARE cursor_sp_index CURSOR FOR SELECT [name] FROM sysobjects WHERE [xtype] = 'P' AND [category] <> 2 ORDER BY [name] OPEN cursor_sp_index FETCH NEXT FROM cursor_sp_index INTO @SPName WHILE (@@FETCH_STATUS = 0) BEGIN SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_sp_index INTO @SPName END CLOSE cursor_sp_index DEALLOCATE cursor_sp_index SELECT @strHTML = '
Table Of Contents
Table Row Count Reserved Row Data Index Size Table Data
Server Options
Database Options
Database Users
' + ISNULL(@IDesc, ' ') + ' ' + ISNULL(@IRows, ' ') + ' ' + ISNULL(@IReserved, ' ') + ' ' + ISNULL(@IData, ' ') + ' ' + ISNULL(@IIndex, ' ') + ' ' + ISNULL(@IRowData, ' ') + '
' + ISNULL(@ViewName, ' ') + '
' + ISNULL(@SPName, ' ') + '


' PRINT @strHTML EXECUTE ('DROP TABLE master..space1') IF @SetOption = 1 exec sp_dboption @databasename ,'select into/bulkcopy', 'false' PRINT '
' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '' PRINT '
Server Settings
Table Row Count
Server Name ' + convert(varchar(30),@@SERVERNAME) + '
Instance ' + convert(varchar(30),@@SERVICENAME) + '
Current Date Time ' + convert(varchar(30),getdate(),113) + '
User ' + USER_NAME() + '
Number of connections ' + convert(varchar(30),@@connections) + '
Language ' + convert(varchar(30),@@language) + '
Language Id ' + convert(varchar(30),@@langid) + '
Lock Timeout ' + convert(varchar(30),@@LOCK_TIMEOUT) + '
Maximum of connections ' + convert(varchar(30),@@MAX_CONNECTIONS) + '
CPU Busy ' + convert(varchar(30),@@CPU_BUSY/1000) + '
CPU Idle ' + convert(varchar(30),@@IDLE/1000) + '
IO Busy ' + convert(varchar(30),@@IO_BUSY/1000) + '
Packets received ' + convert(varchar(30),@@PACK_RECEIVED) + '
Packets sent ' + convert(varchar(30),@@PACK_SENT) + '
Packets w errors ' + convert(varchar(30),@@PACKET_ERRORS) + '
TimeTicks ' + convert(varchar(30),@@TIMETICKS) + '
IO Errors ' + convert(varchar(30),@@TOTAL_ERRORS) + '
Total Read ' + convert(varchar(30),@@TOTAL_READ) + '
Total Write ' + convert(varchar(30),@@TOTAL_WRITE) + '

Back To Top ^

' SET @strHTML = '
' PRINT @strHTML SELECT @strHTML = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' FROM master..sysdatabases WHERE [name] = db_Name() GROUP BY [name] PRINT @strHTML SELECT @DBPath = (SELECT [filename] FROM master..sysdatabases WHERE [name] = db_Name()) PRINT '' SELECT @DBLastBackup = (SELECT CONVERT( SmallDateTime , MAX(Backup_Finish_Date)) FROM MSDB.dbo.BackupSet WHERE Type = 'd' AND Database_Name = db_Name()) PRINT '' SELECT @DBLastBackupDays = (SELECT DATEDIFF(d, MAX(Backup_Finish_Date), Getdate()) FROM MSDB.dbo.BackupSet WHERE Type = 'd' AND Database_Name = db_Name()) PRINT '' SET @strHTML = '
Database Settings
Option Setting
Name ' + [name] + '
autoclose ' + MIN(CASE status & 1 WHEN 1 THEN 'True' ELSE 'False' END) + '
select into/bulkcopy ' + MIN(CASE status & 4 WHEN 4 THEN 'True' ELSE 'False' END) + '
trunc. log on chkpt ' + MIN(CASE status & 8 WHEN 8 THEN 'True' ELSE 'False' END) + '
torn page detection ' + MIN(CASE status & 16 WHEN 16 THEN 'True' ELSE 'False' END) + '
loading ' + MIN(CASE status & 32 WHEN 32 THEN 'True' ELSE 'False' END) + '
pre recovery ' + MIN(CASE status & 64 WHEN 64 THEN 'True' ELSE 'False' END) + '
recovering ' + MIN(CASE status & 128 WHEN 128 THEN 'True' ELSE 'False' END) + '
Falset recovered ' + MIN(CASE status & 256 WHEN 256 THEN 'True' ELSE 'False' END) + '
offline ' + MIN(CASE status & 512 WHEN 512 THEN 'True' ELSE 'False' END) + '
read only ' + MIN(CASE status & 1024 WHEN 1024 THEN 'True' ELSE 'False' END) + '
dbo use only ' + min(CASE status & 2048 WHEN 2048 THEN 'True' ELSE 'False' END) + '
single user ' + MIN(CASE status & 4096 WHEN 4096 THEN 'True' ELSE 'False' END) + '
emergency mode ' + MIN(CASE status & 32768 WHEN 32768 THEN 'True' ELSE 'False' END) + '
autoshrink ' + MIN(CASE status & 4194304 WHEN 4194304 THEN 'True' ELSE 'False' END) + '
cleanly shutdown ' + MIN(CASE status & 1073741824 WHEN 1073741824 THEN 'True' ELSE 'False' END) + '
ANSI null default ' + MIN(CASE status2 & 16384 WHEN 16384 THEN 'True' ELSE 'False' END) + '
concat null yields null ' + MIN(CASE status2 & 65536 WHEN 65536 THEN 'True' ELSE 'False' END) + '
recursive triggers ' + MIN(CASE status2 & 131072 WHEN 131072 THEN 'True' ELSE 'False' END) + '
default to local cursor ' + MIN(CASE status2 & 1048576 WHEN 1048576 THEN 'True' ELSE 'False' END) + '
quoted identifier ' + MIN(CASE status2 & 8388608 WHEN 8388608 THEN 'True' ELSE 'False' END) + '
cursor close on commit ' + MIN(CASE status2 & 33554432 WHEN 33554432 THEN 'True' ELSE 'False' END) + '
ANSI nulls ' + MIN(CASE status2 & 67108864 WHEN 67108864 THEN 'True' ELSE 'False' END) + '
ANSI warnings ' + MIN(CASE status2 & 268435456 WHEN 268435456 THEN 'True' ELSE 'False' END) + '
full text enabled ' + MIN(CASE status2 & 536870912 WHEN 536870912 THEN 'True' ELSE 'False' END) + '
Data Path ' + @DBPath + '
Last Backup ' + ISNULL(CONVERT(varchar(50),@DBLastBackup),' ') + '
Days Since Last Backup ' + ISNULL(CONVERT(varchar(10),@DBLastBackupDays),' ') + '

Back To Top ^

' PRINT @strHTML DECLARE cursor_users CURSOR FOR SELECT LEFT(rtrim(CASE u1.islogin WHEN 1 THEN u1.name END), 30), LEFT(rtrim(u1.name), 30), LEFT(rtrim(u2.name), 30) FROM sysusers u1, sysusers u2 WHERE u1.gid = u2.uid AND u1.sid IS NOT NULL AND u1.name NOT IN ('guest', 'dbo', 'Administrator') OPEN cursor_users SET @strHTML = '
' PRINT @strHTML FETCH NEXT FROM cursor_users INTO @UserLogin,@UserName,@UserGroup WHILE (@@FETCH_STATUS = 0) BEGIN SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_users INTO @UserLogin,@UserName,@UserGroup END CLOSE cursor_users DEALLOCATE cursor_users SELECT @strHTML = '
Users
Login Name User Name Group Name
' + ISNULL(@UserLogin, ' ') + ' ' + ISNULL(@UserName, ' ') + ' ' + ISNULL(@UserGroup, ' ') + '

Back To Top ^

' PRINT @strHTML SELECT @strHTML = '
Tables


' PRINT @strHTML DECLARE cursor_documentation CURSOR FOR SELECT DISTINCT id , [name] FROM sysobjects WHERE OBJECTPROPERTY(sysobjects.id, 'IsMSShipped') = 0 AND sysobjects.type = 'U' ORDER BY sysobjects.[name] OPEN cursor_documentation FETCH NEXT FROM cursor_documentation INTO @table_id, @TableName WHILE (@@FETCH_STATUS = 0) BEGIN --building HTML tables documentation SELECT @strHTML = '' FROM sysobjects WHERE sysobjects.id = @table_id PRINT @strHTML SET @strHTML = '' DECLARE cursor_Column CURSOR FOR -- declare @table_id varchar(10) SELECT syscolumns.[name], systypes.[name], --(SELECT systypes.[name] FROM systypes WHERE xtype = syscolumns.xtype), syscolumns.length, sysproperties.[value], syscolumns.prec, syscolumns.scale, syscolumns.[collation] FROM sysobjects INNER JOIN syscolumns ON sysobjects.id = syscolumns.id INNER JOIN systypes ON syscolumns.xtype = systypes.xtype LEFT OUTER JOIN sysproperties ON syscolumns.colid = sysproperties.smallid AND syscolumns.id = sysproperties.id -- JOIN systypes ON systypes.xtype = syscolumns.xtype WHERE sysobjects.id = @table_id ORDER BY syscolumns.colorder OPEN cursor_Column FETCH NEXT FROM cursor_Column INTO @ColumnName, @ColumnType, @ColumnLength, @ColumnComments, @ColumnPrec, @ColumnScale, @ColumnCollation WHILE (@@FETCH_STATUS = 0) BEGIN SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_Column INTO @ColumnName, @ColumnType, @ColumnLength, @ColumnComments, @ColumnPrec, @ColumnScale, @ColumnCollation END CLOSE cursor_Column DEALLOCATE cursor_Column SELECT @strHTML = '
' + sysobjects.name + '
Column Type Length Precision Scale Collation Comments
' + @ColumnName + ' ' + ISNULL(@ColumnType, ' ') + ' ' + ISNULL(convert(varchar(5), @ColumnLength), ' ') + ' ' + ISNULL(convert(varchar(5), @ColumnPrec), ' ') + ' ' + ISNULL(convert(varchar(5), @ColumnScale), ' ') + ' ' + ISNULL(@ColumnCollation, ' ') + ' ' + ISNULL(convert(varchar(500), @ColumnComments), ' ') + '
' PRINT @strHTML SELECT @strHTML1 = '' FROM sysobjects WHERE sysobjects.id = @table_id SET @Populated = 0 SET @strHTML = '' DECLARE cursor_Constraint CURSOR FOR (SELECT CASE o1.xtype WHEN 'C' THEN 'Check' WHEN 'D' THEN 'Default' WHEN 'F' THEN 'Foreign Key' WHEN 'PK' THEN 'Primary Key' WHEN 'UQ' THEN 'Unique' ELSE 'Other' END AS 'Constraint Type', o1.name AS 'Constraint Name', o.name AS 'Table Name', c1.name AS 'Column Name', NULL AS 'FK Table Name', NULL AS 'FK Column Name', k.keyno AS 'KeyNo', NULL AS 'Default/Check Value' FROM sysobjects o JOIN sysobjects o1 ON o1.Parent_obj = o.id JOIN sysconstraints c ON c.constid = o1.id JOIN sysindexes i ON i.id = o.id AND i.name = o1.name JOIN sysindexkeys k ON k.id = i.id AND k.indid = i.indid JOIN syscolumns c1 ON c1.id = k.id AND c1.colid = k.colid WHERE o1.xtype = 'UQ' AND o.id = @table_id UNION SELECT CASE o1.xtype WHEN 'C' THEN 'Check' WHEN 'D' THEN 'Default' WHEN 'F' THEN 'Foreign Key' WHEN 'PK' THEN 'Primary Key' WHEN 'UQ' THEN 'Unique' ELSE 'Other' END AS 'Constraint Type', o1.name AS 'Constraint Name', o.name AS 'Table Name', c1.name AS 'Column Name', NULL AS 'FK Table Name', NULL AS 'FK Column Name', NULL AS 'KeyNo', c.text AS 'Default/Check Value' FROM sysobjects o JOIN sysobjects o1 ON o1.Parent_obj = o.id JOIN syscolumns c1 ON c1.id = o1.parent_obj AND c1.colid = o1.info JOIN syscomments c ON o1.id = c.id WHERE o1.xtype In ('C' , 'D') AND o.id = @table_id UNION SELECT CASE o1.xtype WHEN 'C' THEN 'Check' WHEN 'D' THEN 'Default' WHEN 'F' THEN 'Foreign Key' WHEN 'PK' THEN 'Primary Key' WHEN 'UQ' THEN 'Unique' ELSE 'Other' END AS 'Constraint Type', o1.name AS 'Constraint Name', o.name AS 'FK Table Name', c1.name AS 'FK Column Name', o2.name AS 'Table Table', c2.name AS 'Column Name', fk.keyno AS 'KeyNo', NULL AS 'Default/Check Value' FROM sysobjects o JOIN sysobjects o1 ON o1.Parent_obj = o.id JOIN sysforeignkeys fk ON fk.constid = o1.id JOIN sysobjects o2 ON o2.id = fk.rkeyid LEFT JOIN syscolumns c1 ON c1.id = fk.fkeyid AND c1.colid = fk.fkey LEFT JOIN syscolumns c2 ON c2.id = fk.rkeyid AND c2.colid = fk.rkey WHERE o1.xtype = 'F' AND o.id = @table_id UNION SELECT CASE o1.xtype WHEN 'C' THEN 'Check' WHEN 'D' THEN 'Default' WHEN 'F' THEN 'Foreign Key' WHEN 'PK' THEN 'Primary Key' WHEN 'UQ' THEN 'Unique' ELSE 'Other' END AS 'Constraint Type', o1.name AS 'Constraint Name', o.name AS 'Table Name', c1.name AS 'Column Name', o2.name AS 'FK Table', c2.name AS 'FK Column Name', fk.keyno AS 'KeyNo', NULL AS 'Default/Check Value' FROM sysobjects o JOIN sysobjects o1 ON o1.Parent_obj = o.id JOIN sysforeignkeys fk ON fk.rkeyid = o.id JOIN sysobjects o2 ON o2.id = fk.fkeyid LEFT JOIN syscolumns c1 ON c1.id = fk.rkeyid AND c1.colid = fk.rkey LEFT JOIN syscolumns c2 ON c2.id = fk.rkeyid AND c2.colid = fk.rkey where o1.xtype = 'PK' AND o.id = @table_id ) ORDER BY [Constraint Type] OPEN cursor_Constraint FETCH NEXT FROM cursor_Constraint INTO @CType,@CName,@CPKTable,@CPKColumn,@CFKTable,@CFKColumn,@CKey,@CDefault WHILE (@@FETCH_STATUS = 0) BEGIN IF @Populated = 0 BEGIN PRINT @strHTML1 END SET @Populated = 1 SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_Constraint INTO @CType,@CName,@CPKTable,@CPKColumn,@CFKTable,@CFKColumn,@CKey,@CDefault END CLOSE cursor_Constraint DEALLOCATE cursor_Constraint SELECT @strHTML = '
Constraints
Constraint Type Contraint Name Table Column FK Table FK Column Key No. Default
' + ISNULL(@CType, ' ') + ' ' + ISNULL(@CName, ' ') + ' ' + ISNULL(convert(varchar(120), @CPKTable), ' ') + ' ' + ISNULL(convert(varchar(120), @CPKColumn), ' ') + ' ' + ISNULL(convert(varchar(120), @CFKTable), ' ') + ' ' + ISNULL(convert(varchar(120), @CFKColumn), ' ') + ' ' + ISNULL(convert(varchar(5), @CKey), ' ') + ' ' + ISNULL(convert(varchar(20), @CDefault), ' ') + '
' PRINT @strHTML SET @strHTML1 = '' SET @Populated = 0 SET @strHTML = '' DECLARE cursor_Triggers CURSOR FOR SELECT [name] AS TriggerName FROM sysobjects WHERE xtype = 'TR' AND parent_obj = @table_id OPEN cursor_Triggers FETCH NEXT FROM cursor_Triggers INTO @Trigger WHILE (@@FETCH_STATUS = 0) BEGIN IF @Populated = 0 BEGIN PRINT @strHTML1 END SET @Populated = 1 SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_Triggers INTO @Trigger END CLOSE cursor_Triggers DEALLOCATE cursor_Triggers SELECT @strHTML = '
Triggers
' + ISNULL(@Trigger, ' ') + '

Back To Top ^

' PRINT @strHTML FETCH NEXT FROM cursor_documentation INTO @table_id, @TableName END CLOSE cursor_documentation DEALLOCATE cursor_documentation SELECT @strHTML = '
Views


' PRINT @strHTML DECLARE cursor_views CURSOR FOR SELECT [name] FROM sysobjects WHERE [xtype] = 'V' AND [category] <> 2 ORDER BY [name] OPEN cursor_views FETCH NEXT FROM cursor_views INTO @ViewName WHILE (@@FETCH_STATUS = 0) BEGIN --Begin Table with view name as title SET @strHTML = '
' PRINT @strHTML SET @strHTML = '' DECLARE cursor_viewdeps CURSOR FOR SELECT TableSysObjects.name AS [Table], col.name AS [Column], systypes.[name], --(SELECT systypes.[name] FROM systypes WHERE xtype = col.xtype), col.length,col.prec, col.scale, col.[collation] FROM sysobjects ViewSysObjects LEFT OUTER JOIN sysdepends dep ON ViewSysObjects.id = dep.id LEFT OUTER JOIN sysobjects TableSysObjects ON dep.depid = TableSysObjects.id LEFT OUTER JOIN syscolumns col ON dep.depnumber = col.colid AND TableSysObjects.id = col.id JOIN systypes ON systypes.xtype = col.xtype WHERE ViewSysObjects.xtype = 'V' And ViewSysObjects.category = 0 AND ViewSysObjects.name = @ViewName ORDER BY ViewSysObjects.name,TableSysObjects.name,col.name OPEN cursor_viewdeps FETCH NEXT FROM cursor_viewdeps INTO @ViewTableDep,@ViewColDep,@ViewColDepType,@ViewColDepLength,@ViewColDepPrec,@ViewColDepScale,@ViewColDepCollation WHILE (@@FETCH_STATUS = 0) BEGIN -- Write the view dependencies SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_viewdeps INTO @ViewTableDep,@ViewColDep,@ViewColDepType,@ViewColDepLength,@ViewColDepPrec,@ViewColDepScale,@ViewColDepCollation END CLOSE cursor_viewdeps DEALLOCATE cursor_viewdeps SELECT @strHTML = '
' + @ViewName + '
Table Dependencies Column Dependencies Column Type Size Precision Scale Collation
' + ISNULL(convert(varchar(200), @ViewTableDep), ' ') + ' ' + ISNULL(convert(varchar(200), @ViewColDep), ' ') + ' ' + ISNULL(@ViewColDepType, ' ') + ' ' + ISNULL(convert(varchar(5), @ViewColDepLength), ' ') + ' ' + ISNULL(convert(varchar(5), @ViewColDepPrec), ' ') + ' ' + ISNULL(convert(varchar(5), @ViewColDepScale), ' ') + ' ' + ISNULL(@ViewColDepCollation, ' ') + '

Back To Top ^

' PRINT @strHTML FETCH NEXT FROM cursor_views INTO @ViewName END CLOSE cursor_views DEALLOCATE cursor_views SELECT @strHTML = '
Stored Procedures


' PRINT @strHTML DECLARE cursor_sp CURSOR FOR SELECT [name] FROM sysobjects WHERE [xtype] = 'P' AND [category] <> 2 ORDER BY [name] OPEN cursor_sp FETCH NEXT FROM cursor_sp INTO @SPName WHILE (@@FETCH_STATUS = 0) BEGIN --Begin Table with view name as title SET @strHTML = '
' PRINT @strHTML SET @strHTML = '' DECLARE cursor_spdeps CURSOR FOR SELECT TableSysObjects.name AS [Table], col.name AS [Column], -- ' ', systypes.[name], --select * from syscolumns -- (SELECT systypes.[name] FROM systypes,syscolumns col WHERE systypes.xtype = col.xtype), col.length,col.prec, col.scale, col.[collation] FROM sysobjects ViewSysObjects LEFT OUTER JOIN sysdepends dep ON ViewSysObjects.id = dep.id LEFT OUTER JOIN sysobjects TableSysObjects ON dep.depid = TableSysObjects.id LEFT OUTER JOIN syscolumns col ON dep.depnumber = col.colid AND TableSysObjects.id = col.id JOIN systypes ON systypes.xtype = col.xtype WHERE ViewSysObjects.xtype = 'P' And ViewSysObjects.category = 0 AND ViewSysObjects.name = @SPName ORDER BY ViewSysObjects.name,TableSysObjects.name,col.name OPEN cursor_spdeps FETCH NEXT FROM cursor_spdeps INTO @SPTableDep,@SPColDep,@SPColDepType,@SPColDepLength,@SPColDepPrec,@SPColDepScale,@SPColDepCollation WHILE (@@FETCH_STATUS = 0) BEGIN -- Write the view dependencies IF @SPColDep = '' BEGIN SET @SPColDep = ' ' END SET @strHTML = '' PRINT @strHTML FETCH NEXT FROM cursor_spdeps INTO @SPTableDep,@SPColDep,@SPColDepType,@SPColDepLength,@SPColDepPrec,@SPColDepScale,@SPColDepCollation END CLOSE cursor_spdeps DEALLOCATE cursor_spdeps SELECT @strHTML = '
' + @SPName + '
' PRINT @strHTML SET @Populated = 0 SET @strHTML1 = '
' DECLARE cursor_Params CURSOR FOR SELECT rtrim(c.name) PARAMETER , rtrim(convert(varchar (50),d.type_name) + case when d.oledb_data_type = 129 /*DBTYPE_STR*/ or d.oledb_data_type = 128 /*DBTYPE_BYTES*/ then '(' + convert(varchar (10),coalesce(d.column_size,c.length)) + ')' when d.oledb_data_type = 130 /*DBTYPE_WSTR*/ then '(' + convert(varchar(10), coalesce(d.column_size,c.length/2)) + ')' else'' end ) DATA_TYPE, case when c.isoutparam =1 then 'Output' else 'Input ' end as "Type" FROM sysobjects o INNER JOIN sysobjects od ON od.id = o.id LEFT OUTER JOIN syscolumns c ON o.id = c.id AND o.type = 'P' LEFT OUTER JOIN master.dbo.spt_provider_types d ON c.xtype = d.ss_dtype WHERE c.length = case when d.fixlen > 0 then d.fixlen else c.length end AND o.name = @SPName OPEN cursor_Params FETCH NEXT FROM cursor_Params INTO @ParamName,@ParamDataType,@ParamType WHILE (@@FETCH_STATUS = 0) BEGIN IF @Populated = 0 BEGIN PRINT @strHTML1 END SET @Populated = 1 SET @strHTML = '' --SET @strHTML = '
' + @ParamType + ' - ' + @ParamName + ' ' + @ParamDataType + '' PRINT @strHTML FETCH NEXT FROM cursor_Params INTO @ParamName,@ParamDataType,@ParamType END CLOSE cursor_Params DEALLOCATE cursor_Params IF @Populated = 1 BEGIN PRINT '
Parameters
' + ISNULL(convert(varchar(200), @ParamType), ' ') + ' ' + ISNULL(convert(varchar(200), @ParamName), ' ') + ' ' + ISNULL(convert(varchar(200), @ParamDataType), ' ') + '
' END SET @strHTML = '
Table Dependencies Column Dependencies Column Type Size Precision Scale Collation
' + ISNULL(convert(varchar(200), @SPTableDep), ' ') + ' ' + ISNULL(convert(varchar(200), @SPColDep), ' ') + ' ' + ISNULL(@SPColDepType, ' ') + ' ' + ISNULL(convert(varchar(5), @SPColDepLength), ' ') + ' ' + ISNULL(convert(varchar(5), @SPColDepPrec), ' ') + ' ' + ISNULL(convert(varchar(5), @SPColDepScale), ' ') + ' ' + ISNULL(@SPColDepCollation, ' ') + '

Back To Top ^

' PRINT @strHTML FETCH NEXT FROM cursor_sp INTO @SPName END CLOSE cursor_sp DEALLOCATE cursor_sp SELECT @strHTML = '' PRINT @strHTML