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

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

Может кто-нибудь сталкивался, как выгрузить именно в htm? Может кто-нибудь сталкивался.
...
Рейтинг: 0 / 0
09.06.2020, 16:37
    #39967473
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
for xml -> xml -> xslt -> html
...
Рейтинг: 0 / 0
09.06.2020, 16:47
    #39967482
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
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
09.06.2020, 17:54
    #39967501
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
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
10.06.2020, 09:45
    #39967706
Katrine_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
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
10.06.2020, 09:52
    #39967711
Katrine_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
Alexander Us
Katrine_S,
Если Вам надо не выгрузить, а переслать по почте в формате html,
и всё просто и топорно: например для себя или коллег, то можно создать хранимую процедуру.


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

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

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

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

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

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


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

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

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


Может в 2005 он там и был, но в 2014 такого формата уже нет. Только MHTML. Скорее всего от него отказались, как от динозавра.
...
Рейтинг: 0 / 0
10.06.2020, 15:08
    #39967899
Katrine_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
В общем у меня получилось следующее:
Код
Код: 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
10.06.2020, 19:27
    #39968021
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
Katrine_S
Мне не нужно красиво. Мне нужна простейшая таблица в формате htm. И Power BI, к сожалению у меня нет.


Ну дык, кляуза for xml замечательно генерит HTML.
Не говоря уже о "руками собрать", али шаблон обработать.
...
Рейтинг: 0 / 0
10.06.2020, 19:45
    #39968030
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
Код: 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
10.06.2020, 19:58
    #39968033
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить отчет из MS SQL 2014 в формате htm
откровенно говоря, тег <style> в простейшей таблице, тем более, чисто для обмена, нафиг не нужен.
А при открытии htm{l} просто отображается стилем "по-умолчанию"
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как выгрузить отчет из MS SQL 2014 в формате htm / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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