powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как выгрузить отчет из MS SQL 2014 в формате htm
17 сообщений из 17, страница 1 из 1
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967468
Katrine_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача по выгрузке отчетов в формате htm. Получатель отчета внешний, и соответственно повлиять на формат предоставления данных я не могу.

Microsoft радостно посылает меня в Report Service, но там я нашла только формат mhtml.

Может кто-нибудь сталкивался, как выгрузить именно в htm? Может кто-нибудь сталкивался.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967473
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for xml -> xml -> xslt -> html
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967482
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S
Есть задача по выгрузке отчетов в формате htm. Получатель отчета внешний, и соответственно повлиять на формат предоставления данных я не могу.

Microsoft радостно посылает меня в Report Service, но там я нашла только формат mhtml.

Может кто-нибудь сталкивался, как выгрузить именно в htm? Может кто-нибудь сталкивался.


Есть такая служба в MS SQL. SQL Server Reporting Services

https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports?view=sql-server-ver15

Вот она занимается исключительно тем, что отчеты в виде html юзерам направо и налево показывает.

А ещё есть Power BI, так та еще красивей это делает.
https://powerbi.microsoft.com/en-us/what-is-power-bi/
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967501
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S,

Если Вам надо не выгрузить, а переслать по почте в формате html,
и всё просто и топорно: например для себя или коллег, то можно создать хранимую процедуру.

Например, процедура которая проверяет переполнение IDENTITY и сообщает об этом почтой.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
 
 
-- Idee : http://sqlfool.com/2011/01/identity-columns-are-you-nearing-the-limits/
-- =============================================
ALTER PROCEDURE [dbo].[sp_Check_Identities]	

	@AlarmWennBelegtMehrAlsProzent decimal(5,2) = 99.0,
	@SemikolongetrennteEmails varchar(200) = NULL	
	
AS
BEGIN	
	SET NOCOUNT ON;
       
  
Create Table #identityStatus
(
      database_name     varchar(128)
    , table_name        varchar(128)
    , column_name       varchar(128)
    , data_type         varchar(128)
    , last_value        bigint
    , max_value         bigint
)

 
/* Use an undocumented command to run a SQL statement in each database on a server */
Execute sp_msforeachdb '
    Use [?];
    Insert Into #identityStatus
    Select ''?'' As [database_name]
        , Object_Name(id.object_id, DB_ID(''?'')) As [table_name]
        , id.name As [column_name]
        , t.name As [data_type]
        , Cast(id.last_value As bigint) As [last_value]
        , Case 
            When t.name = ''tinyint''   Then 255 
            When t.name = ''smallint''  Then 32767 
            When t.name = ''int''       Then 2147483647 
            When t.name = ''bigint''    Then 9223372036854775807
          End As [max_value]
    From sys.identity_columns As id
    Join sys.types As t
        On id.system_type_id = t.system_type_id
    Where id.last_value Is Not Null';
 
/* Retrieve our results and format it all prettily */
Select 
      Datenbank=database_name      
    , Tabelle=table_name
    , Spalte=column_name
    , Typ=data_type
    
    , AktWert=last_value
    
    , MaxWert=max_value
    
    , AnzFrei=max_value-last_value
      
    
    , ProzFrei=
      Case 
        When last_value < 0 Then 100
        Else cast((1 - last_value*1.0 / max_value) * 100  as decimal(24,4))
      End   
      
    , ProzBelegt=
      Case 
        When last_value < 0 Then 0
        Else Cast((last_value*1.0 / max_value) * 100 As decimal(24,4))
      End     
      
    , Alarm=
        Case 
         When last_value*1.0 / max_value >= @AlarmWennBelegtMehrAlsProzent / 100.0
            Then 1
         Else 0
        End 
        
into #results                      
From #identityStatus
where database_name not in ('msdb','','','')
Order By ProzFrei;


DECLARE @body NVARCHAR(MAX)
SET     @body = 
N'<head>
<style>
p{font-family: Courier New; font-size:11px; color:blue}
table{border-collapse:collapse;}
table{padding:0px 4px 0px 4px;}
table, td, th {border:1px solid black;}
th {background-color:Crimson; color:white;}
table{font-size:12px;}
</style>
</head>'


set @body=@body+ N'<p>At least one of the identification columns has more than ' + cast(@AlarmWennBelegtMehrAlsProzent as varchar(20)) + '% of the occupied values'

set @body = @body +  N'<table>'
    + N'<tr><th>Datenbank</th><th>Table</th><th>Spalte</th><th>Typ</th><th>cur.Val</th><th>max.Val</th><th>Count.Free</th><th>% Free</th><th>% occupied</th></tr>'
    + CAST((
        SELECT  p.Datenbank		AS td,
                p.Tabelle		AS td,
                p.Spalte		AS td,
                p.Typ			AS td,
                p.AktWert		AS td,
                p.MaxWert		AS td,
                p.AnzFrei		AS td,
                p.ProzFrei		AS td,
                p.ProzBelegt	AS td              
        FROM    #results p
        WHERE   Alarm=1
        FOR XML RAW('tr'), ELEMENTS
    ) AS NVARCHAR(MAX))
    + N'</table>'

declare @procname varchar(200)
set @procname = isnull(OBJECT_NAME(@@PROCID),'_sp_Check_Identities_')
    
set @body = @body + 
'<p>Job: "Tools: Check Identity Columns"' +
'<br>Detaillierte &#220;bersicht &#252;ber Prozeduraufruf auf: ' + @@SERVERNAME  + 
'<br>Beispiel 1: ' + DB_NAME() + '..' + @procname + ' 90.5                      -- shows all identity columns that have >= 90.5% values'  +  
'<br>Beispiel 2: ' + DB_NAME() + '..' + @procname + ' 90.5, ''XXXXX@XXXXX.com''  -- sends mail if one of the columns occupies >= 90.5% of the values'       
   
if len(@SemikolongetrennteEmails)>0 and exists(select * from #results where alarm = 1 )
begin   
    exec msdb..sp_send_dbmail
	@profile_name		='XXXXXXXXXX', 
	@recipients			=@SemikolongetrennteEmails, 	
	@copy_recipients	='', 
	@body_format		='HTML',
	@subject			='Identity column overflows soon', 
	@body				=@body,
	@importance			='HIGH'   
end
else
begin
   select * from #results order by ProzBelegt desc
end	
   
Drop Table #identityStatus;

END

...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967706
Katrine_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin

Есть такая служба в MS SQL. SQL Server Reporting Services

https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports?view=sql-server-ver15

Вот она занимается исключительно тем, что отчеты в виде html юзерам направо и налево показывает.


Я вроде писала, что Report Service мне не подходит. Точно помню, что писала. Вот же, точно писала:
Katrine_S
Microsoft радостно посылает меня в Report Service, но там я нашла только формат mhtml.


Мне нужен формат htm. Не mhtml, а именно htm. И вот именно в htm Report Service не сохраняет.
Задача стоит сохранить файл в нужном формате, и отправить его внешнему источнику. И они его будут загружать к себе в систему.
Повлиять на то, какие форматы они могут или не могут к себе загружать, я, как вы понимаете, никак не могу.

a_voronin

А ещё есть Power BI, так та еще красивей это делает.
https://powerbi.microsoft.com/en-us/what-is-power-bi/

Мне не нужно красиво. Мне нужна простейшая таблица в формате htm. И Power BI, к сожалению у меня нет.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967711
Katrine_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Us
Katrine_S,
Если Вам надо не выгрузить, а переслать по почте в формате html,
и всё просто и топорно: например для себя или коллег, то можно создать хранимую процедуру.


К сожалению, нужно пересылать не почтой, а сохранять на ftp.
Но спасибо за пример процедуры, тоже думала двигаться в направлении просто создать htm файл, из xml запроса.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967722
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S,

Ну тогда рассмотрите то, что Вам посоветовал Сон Веры Павловны . Это проффессиональное решение.

Или, на коленке: сделайте в visual studio консольную пограммку, которая выгружает Ваши данные в объект DataTable, а DataTable можно преобразовать в html. Примеры легко нагуглите. Запускайте программку например ежедневно, из диспетчера задач виндовс.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967726
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Us
Ну тогда рассмотрите то, что Вам посоветовал Сон Веры Павловны

Могу даже пример дать: 15988736
В данном случае надо будет просто report.ToString() вместо отправки по почте сохранить в файл, и всё.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967741
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Katrine_S,

посмотрите в направлении Scripting.FileSystemObject
Пример: https://scala.org.ru/howto/write-to-txt-file-from-sql-query-example/]

HTM файл достаточно просто собрать вручную. Тем более, это примитивная таблица
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967765
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S
просто создать htm файл, из xml запроса.
21393022
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967797
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S
Мне нужен формат htm. Не mhtml, а именно htm. И вот именно в htm Report Service не сохраняет.


... падажи !
Я давно с SSRS не пересекался, но вроде как всё там было ...
И уж если он "умеет" выгружать в веб-архив, так в какой-то "хтм" он два раза должен уметь ! :)

Microsoft SQL Server 2005 Reporting Services For Dummies
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967855
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RS формирует HTML, его как раз и видно в браузере при запросе отчета на сервере.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967892
Katrine_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court

... падажи !
Я давно с SSRS не пересекался, но вроде как всё там было ...
И уж если он "умеет" выгружать в веб-архив, так в какой-то "хтм" он два раза должен уметь ! :)


Может в 2005 он там и был, но в 2014 такого формата уже нет. Только MHTML. Скорее всего от него отказались, как от динозавра.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39967899
Katrine_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем у меня получилось следующее:
Код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
declare @text nvarchar(max)
declare @shapka nvarchar(500)
declare @cmd nvarchar(4000)
declare @path nvarchar(1000)
declare @th nvarchar(4000)

set @path='C:\Work\'

set @shapka='
	<html>
	<head>
		<style>
			p{font-family: Courier New; font-size:11px; color:blue}
			table{border-collapse:collapse;}
			table{padding:0px 4px 0px 4px;}
			table, td, th {border:1px solid black;}
			table{font-size:12px;}
		</style>
	</head>
	<body>
	<table>'

--Продажи
set @text=(
SELECT [sklad] AS td
      ,[tovar] AS td
      ,[kol] AS td
      ,[summa] AS td
        FROM    tbl_sales
        FOR XML RAW('tr'), ELEMENTS
		)


set @th='
    <tr>
		<th>Склад</th>
		<th>Товар</th>
		<th>Количество</th>
		<th>Сумма</th>
	</tr>
	'

delete from [tbl_otchet_htm] where otchet='Test'

insert into [tbl_otchet_htm]
select 'Test', @shapka+@th+@text+'</table></body></html>'

set @cmd='bcp "SELECT [txttofile] FROM olap.[dbo].[tbl_otchet_htm]  where otchet=''Test''"  queryout "'+@path+'test.htm"  -C 65001 -c -r -T '
 EXEC xp_cmdshell @cmd


...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39968021
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katrine_S
Мне не нужно красиво. Мне нужна простейшая таблица в формате htm. И Power BI, к сожалению у меня нет.


Ну дык, кляуза for xml замечательно генерит HTML.
Не говоря уже о "руками собрать", али шаблон обработать.
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39968030
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 select head = ( select style = 'p{font-family: Courier New; font-size:11px; color:blue}
			table{border-collapse:collapse;}
			table{padding:0px 4px 0px 4px;}
			table, td, th {border:1px solid black;}
			table{font-size:12px;}'
           for xml path('')
		)

		, body = (select '<tr><th>Склад</th><th>Товар</th><th>Количество</th><th>Сумма</th></tr>'
		                 + ( select ( SELECT [sklad] AS td,[tovar] AS td,[kol] AS td,[summa] AS td FROM tbl_sales FOR XML RAW('tr'), ELEMENTS ) ) 
			        for xml path('table') 
			     )
   for xml path(''), root('html') 
...
Рейтинг: 0 / 0
Как выгрузить отчет из MS SQL 2014 в формате htm
    #39968033
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
откровенно говоря, тег <style> в простейшей таблице, тем более, чисто для обмена, нафиг не нужен.
А при открытии htm{l} просто отображается стилем "по-умолчанию"
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как выгрузить отчет из MS SQL 2014 в формате htm
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]