Hướng dẫn how to generate html report in sql server - cách tạo báo cáo html trong máy chủ sql

/* Script to send an alert through mail, with information that how many drive space is required from next databases growth on a specific instance and how many space is available. Script By: Amna Asif for ConnectSQL.blogspot.com */ DECLARE @dbName varchar(200), @Qry Nvarchar(max) DECLARE @dbsize VARCHAR(50), @logsize VARCHAR(50), @reservedpages VARCHAR(50), @usedpages VARCHAR(50), @pages VARCHAR(50) SET @dbName = '' ---Get LOG File Spaces of All Databases-- CREATE TABLE #LogSpaceStats ( RowID INT IDENTITY PRIMARY KEY, dbName SYSNAME, Totallogspace DEC(20, 2), UsedLogSpace DEC(20, 2), Status CHAR(1) ) INSERT #LogSpaceStats ( dbName, Totallogspace, UsedLogSpace, Status ) EXEC ( 'DBCC sqlperf(logspace) WITH NO_INFOMSGS' ) --Get Info of All Drives DECLARE @ServerDrives TABLE ( RowID int IDENTITY PRIMARY KEY, Drive char, DriveSpace varchar(100), Required_Space varchar(100) ) INSERT INTO @ServerDrives ( Drive, DriveSpace ) EXEC master.sys.xp_fixeddrives --Temporary Table to hold requried data CREATE TABLE #ServerFileStats ( RowID INT IDENTITY PRIMARY KEY, dbName SYSNAME, Database_DSize varchar(100), Allocated_Space varchar(100), Unallocated_Space varchar(100), Unused varchar(100), Database_LSize varchar(100), UsedLogSpace DEC(20, 2), FreeLogSpace DEC(20, 2), FDataFileGrowth DEC(20, 2), FLogFileGrowth DEC(20, 2), DataFileDrive char, LogFileDrive char ) --Cursor Used to get each database size on given instance DECLARE cur_dbName CURSOR FOR SELECT NAME FROM SYS.DATABASES WHERE state_desc = 'ONLINE' AND is_read_only = 0 OPEN cur_dbName FETCH NEXT FROM cur_dbName into @dbName WHILE @@FETCH_Status = 0 BEGIN SELECT @Qry = ' SELECT @dbsizeOUT = sum(convert(bigint, case when status & 64 = 0 then size else 0 end)) ,@logsizeOUT = sum(convert(bigint, case when status & 64 <> 0 then size else 0 end)) FROM [' + @dbName + '].dbo.sysfiles ' EXEC sp_executesql @Qry, N'@dbsizeOUT nvarchar(50) OUTPUT,@logsizeOUT nvarchar(50) OUTPUT', @dbsizeOUT = @dbsize OUTPUT, @logsizeOUT = @logsize OUTPUT ; SELECT @Qry = ' SELECT @reservedpagesOUT = sum(a.total_pages) ,@usedpagesOUT = sum(a.used_pages) FROM [' + @dbName + '].sys.partitions p join [' + @dbName + '].sys.allocation_units a on p.partition_id = a.container_id LEFT JOIN [' + @dbName + '].sys.internal_tables it on p.object_id = it.object_id' EXEC sp_executesql @Qry, N'@reservedpagesOUT nvarchar(50) OUTPUT,@usedpagesOUT nvarchar(50) OUTPUT', @reservedpagesOUT = @reservedpages OUTPUT, @usedpagesOUT = @usedpages OUTPUT ; SELECT @Qry = ' INSERT INTO #ServerFileStats SELECT DB_size.Database_Name , DB_size.Database_DSize , DB_size.Allocated_Space , DB_size.Unallocated_Space , DB_size.Unused , DB_size.Database_LSize , (lss.TotalLogSpace*(lss.UsedLogSpace/100)) UsedLogSpace , (TotalLogSpace-(TotalLogSpace*(UsedLogSpace/100))) FreeLogSpace ,CASE mfD.is_percent_growth WHEN 0 THEN CONVERT(DEC(15,2),(mfD.growth* 8192 / 1048576)) ELSE CONVERT(DEC(15,2),(CONVERT(DEC(15,2),REPLACE(DB_size.Database_DSize,'' MB'','''')) *mfD.growth/100)) END FDataFileGrowth , CASE mfL.is_percent_growth WHEN 0 THEN CONVERT(DEC(15,2),(mfL.growth* 8192 / 1048576)) ELSE CONVERT(DEC(15,2),(CONVERT(DEC(15,2),REPLACE(DB_size.Database_DSize,'' MB'','''')) *mfL.growth/100)) END FLogFileGrowth ,LEFT(mfD.physical_name,1) DataFileDrive ,LEFT(mfL.physical_name,1) LogFileDrive FROM ( SELECT Database_Name = ''' + @dbName + ''' , Database_DSize = ltrim(str((convert (dec (15,2),' + @dbsize + '))* 8192 / 1048576,15,2) + '' MB'') , ''Allocated_Space''=ltrim(str((CASE WHEN ' + @dbsize + ' >= ' + @reservedpages + ' THEN convert (DEC (15,2),' + @reservedpages + ')* 8192 / 1048576 ELSE 0 end),15,2) + '' MB'') , ''Unallocated_Space'' = ltrim(str((CASE WHEN ' + @dbsize + ' >= ' + @reservedpages + ' THEN (convert (DEC (15,2),' + @dbsize + ') - convert (DEC (15,2),' + @reservedpages + '))* 8192 / 1048576 ELSE 0 end),15,2) + '' MB'') , ''Unused'' =ltrim(str((CAST((' + @reservedpages + ' - ' + @usedpages + ')AS BIGINT) * 8192 / 1024.)/1024,15,2) + '' MB'') , Database_LSize = ltrim(str((convert (dec (15,2),' + @logsize + '))* 8192 / 1048576,15,2) + '' MB'') )DB_size LEFT JOIN #LogSpaceStats AS lss on lss.dbName=DB_size.Database_Name INNER JOIN ' + @dbName + '.sys.databases db ON DB.name=DB_size.Database_Name INNER JOIN ' + @dbName + '.sys.master_files mfD on mfD.database_id=DB.database_id AND mfD.type_desc=''ROWS'' INNER JOIN ' + @dbName + '.sys.master_files mfL on mfL.database_id=DB.database_id AND mfL.type_desc=''LOG''' EXEC ( @Qry ) FETCH NEXT FROM cur_dbName into @dbName END CLOSE cur_dbName DEALLOCATE cur_dbName UPDATE @ServerDrives SET Required_Space = SumDriveS.sumofdrivespcae FROM ( SELECT SUM(CONVERT(DEC(20, 2), sumofdrivespcae)) sumofdrivespcae, DRIVE AS DRIVE FROM ( SELECT SUM(CONVERT(DEC(20, 2), REPLACE(fss.FDataFileGrowth, ' MB', ''))) sumofdrivespcae, fss.DataFileDrive AS DRIVE FROM #ServerFileStats fss GROUP BY fss.DataFileDrive UNION SELECT SUM(CONVERT(DEC(20, 2), REPLACE(fss.FLogFileGrowth, ' MB', ''))) sumofdrivespcae, fss.LogFileDrive AS DRIVE FROM #ServerFileStats fss GROUP BY fss.LogFileDrive ) SumDrive GROUP BY SumDrive.DRIVE ) SumDriveS LEFT OUTER JOIN @ServerDrives sd on SumDriveS.Drive = sd.Drive ------------------------------------------------------------------------------ -----------------------------------------Report Mailing----------------------- DECLARE @Loop int DECLARE @Subject varchar(100) DECLARE @strMsg varchar(4000) SELECT @Subject = 'SQL Monitor Alert: ' + @@SERVERNAME + ' ' + Convert(varchar, GETDATE()) Declare @Body varchar(max), @TableHead varchar(1000), @TableTail varchar(1000), @TableHead2 varchar(1000), @Body2 varchar(3000) Set NoCount On ; -- Create HTML mail body Set @TableTail = '

' ; Set @TableHead = '' + '' + '' + ''+''+''+''+''+''+''+''+''+''+''+''+''+''+'' ; Select @Body = ( SELECT td =CONVERT(VARCHAR, ROW_NUMBER() OVER ( ORDER BY dbName )) +CHAR(10), td =ISNULL(dbName, 'Unknown') +CHAR(10), td =ISNULL('Data/LOG', 'Unknown') +CHAR(10), td =ISNULL(Database_DSize, '0.00') +CHAR(10), td =ISNULL(Allocated_Space, '0.00') +CHAR(10), td =ISNULL(Unallocated_Space, '0.00') +CHAR(10), td =ISNULL(Unused, '0.00') +CHAR(10), '', td =ISNULL(Database_LSize, '0.00') +CHAR(10), td =ISNULL(convert(varchar, UsedLogSpace), '0.00') +' MB'+CHAR(10), td =ISNULL(convert(varchar, FreeLogSpace), '0.00') +' MB'+CHAR(10), td =ISNULL(convert(varchar, FDataFileGrowth), '0.00') +' MB'+CHAR(10), '', td =ISNULL(convert(varchar, FLogFileGrowth), '0.00') +' MB'+CHAR(10), '', td =ISNULL(DataFileDrive, '0') +CHAR(10), '', td =ISNULL(LogFileDrive, '0') +CHAR(10), ''FROM #ServerFileStats ORDER BY dbName FORXMLRAW('tr'), ELEMENTS ) -- Replace the entity codes and row numbersSet @Body =Replace(@Body, '_x0020_', space(1)) Set @Body =Replace(@Body, '_x003D_', '=') Set @Body =Replace(@Body, '1', '') Set @Body =Replace(@Body, '0', '') DECLARE @flag BITSELECT @flag =1FROM @ServerDrives WHEREconvert(dec(15, 2), DriveSpace) <convert(dec(15, 2), Required_Space) *2SET @flag =ISNULL(@flag, 0) SET @TableHead2 =''+''+''+'
Row ID Database Name File Group DF Total Space DF Allocated Space DF Unallocated Space DF Unused LF Total Space LF Used Space LF Unused Space DF FileGrowth LF FileGrowth DF Drive LF Drive
'+''+''+' 'IF ( @flag =0 ) set @TableHead2 = @TableHead2 +'' ; ELSEset @TableHead2 = @TableHead2 +'' ; Select @Body2 = ( SELECT td =ROW_NUMBER() OVER ( ORDER BY Drive ), td =ISNULL(Drive, 'Unknown') +char(10), td =ISNULL(DriveSpace +' MB', 0) +char(10), td =ISNULL(Required_Space +' MB', 0) FROM @ServerDrives sd ForXMLRAW('tr'), Elements ) Select @Body = @TableHead2 + @Body2 + @TableTail +'



'
+ @TableHead + @Body + @TableTail -- Send mail EXECmsdb.dbo.sp_send_dbmail @recipients ='', @subject = @Subject, @profile_name ='MyMailProfileName', @body = @Body, @body_format ='HTML' ; --Drop Temporary Tables When Not RequiredDROPTABLE #ServerFileStats DROPTABLE #LogSpaceStats

Tìm nạp dữ liệu từ bảng MySQL ..

Bạn có thể sản xuất HTML từ SQL vì SQL Server có hỗ trợ tích hợp để xuất XML và HTML được hiểu rõ nhất là một phương ngữ hơi kỳ lạ của XML truyền đạt ý nghĩa cho các thẻ được xác định trước. Có rất nhiều trường hợp cạnh trong đó một cấu trúc HTML là cách rõ ràng nhất để truyền đạt các bảng, danh sách và thư mục. because SQL Server has built-in support for outputting XML, and HTML is best understood as a slightly odd dialect of XML that imparts meaning to predefined tags. There are plenty of edge cases where an HTML structure is the most obvious way of communicating tables, lists and directories.

Làm thế nào chúng ta có thể lưu trữ dữ liệu từ HTML trong SQL?

Sử dụng biểu mẫu này, bạn có thể nắm bắt các đơn đặt hàng của khách hàng và tự động lưu chúng vào cơ sở dữ liệu SQL ...
Xác định truy vấn.Chúng tôi sẽ xác định hai truy vấn.....
Tạo lược đồ XML.....
Tạo biểu mẫu.....
Liên kết đến cơ sở dữ liệu.....
Xác định truy vấn SQL.....
Tạo lược đồ XML.....
Tạo biểu mẫu.....
Liên kết đến cơ sở dữ liệu.....

Xác định truy vấn SQL.....

Tạo lược đồ XML.....database objects that contain all the data in a database. In tables, data is logically organized in a row-and-column format similar to a spreadsheet. Each row represents a unique record, and each column represents a field in the record.

Liên kết đến cơ sở dữ liệu ..

Làm thế nào chúng ta có thể lấy dữ liệu từ cơ sở dữ liệu và hiển thị ở dạng HTML ?..
Kết nối PHP với cơ sở dữ liệu MySQL.Bạn có thể sử dụng truy vấn kết nối cơ sở dữ liệu sau để kết nối PHP với cơ sở dữ liệu MySQL ..
Chèn dữ liệu vào bảng phpmyadmin ..
Tìm nạp dữ liệu từ bảng MySQL ..
Hiển thị dữ liệu trong bảng HTML ..
Kiểm tra bản thân để chèn dữ liệu ..

Row ID Drive Drive Space Required Drive Space
Required Drive Space