Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Reporting Service замена обращениий к серверам и БД / 25 сообщений из 27, страница 1 из 2
05.11.2020, 18:04
    #40015653
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Добрый день!
Есть задача изменить названия серверов всех отчетов ms sql reporting service - отчетов много и скачивать каждый отчет отдельно, менять сервер и вновь загружать потребует больших затрат.
Есть БД ReportServer однако информация о подключениях в самих отчетах в ней я не нашел.
Подскажите, пожалуйста, есть ли какой то способ сделать это быстро - количество отчетов порядка 300?
Заранее спасибо
...
Рейтинг: 0 / 0
05.11.2020, 18:16
    #40015660
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama информация о подключениях в самих отчетах в ней я не нашел.
https://docs.microsoft.com/en-us/sql/reporting-services/report-data/create-modify-and-delete-shared-data-sources-ssrs?view=sql-server-ver15
...
Рейтинг: 0 / 0
05.11.2020, 18:47
    #40015676
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,

это зависит от того, используют ли отчеты свои собственные или shared источники данных.
shared datasources поменять легко


в случае собственных...
можно выгрузить сами отчеты в виде xml в файлы с помощью подобного запроса (см. столбец extract command)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select
	Name
    ,[Path]
     ,CONVERT(xml, CONVERT(varbinary(max), content)) AS Report
	 ,'bcp "select convert(xml,convert(varbinary(max),content)) from '
		+quotename(db_name())
		+'.dbo.Catalog where name=''' 
		+Name
		+'''" queryout '
		+replace(path,'/','_')
		+'-'
		+Name
		+'.rdl -S '
		+convert(varchar(200),@@servername)
		+' -T -c'  [extract command]
from ReportServer.dbo.[Catalog] 
where type=2 



поправить и залить обратно

а на счет "быстро" приходит на ум только такое - в файле hosts прописать соответствия старых и новых серверов
править на сервере, где установлен SSRS
...
Рейтинг: 0 / 0
06.11.2020, 10:32
    #40015865
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
komrad,
Доброе утро, спасибо - я правильно понимаю, что выгружать в rdl посредством cmd?
А уточните, пожалуйста, как я смогу залить измененные rdl обратно в БД reportserver?
...
Рейтинг: 0 / 0
06.11.2020, 11:00
    #40015873
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama
komrad,
Доброе утро, спасибо - я правильно понимаю, что выгружать в rdl посредством cmd?
А уточните, пожалуйста, как я смогу залить измененные rdl обратно в БД reportserver?


И еще, уточните, пожалуйста, а в какую папку будет произведена выгрузка - так как в столбце extract command пути не указано - я ранее не работал с таким функционалом.
...
Рейтинг: 0 / 0
06.11.2020, 12:11
    #40015894
bamper78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,
Перенесите бекап БД ReportServer на новый сервер и настройте подключение к ней.
...
Рейтинг: 0 / 0
06.11.2020, 12:12
    #40015895
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama
komrad,
Доброе утро, спасибо - я правильно понимаю, что выгружать в rdl посредством cmd?

да, BCP это утилита командной строки; обычно идет вместе с SQL Native Client

dermama

А уточните, пожалуйста, как я смогу залить измененные rdl обратно в БД reportserver?

Тут два варианта: вручную и автоматизированная массовая.

Автоматизированная массовая - это сложный процесс. Гуглить на тему "ssrs upload multiple rdl"

Однако, непонятны следующие моменты:
- структура папок в SSRS (отчеты надо разложить в существующие папки)
- какие типы data sources используются (надо ли выгружать все отчеты или достаточно поправить shared data sources?)
- имеются ли подписки на отчеты (слетят ли они при перезаписи отчета?)
...
Рейтинг: 0 / 0
06.11.2020, 12:33
    #40015904
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama

И еще, уточните, пожалуйста, а в какую папку будет произведена выгрузка - так как в столбце extract command пути не указано - я ранее не работал с таким функционалом.

В ту папку, из которой будет вызываться BCP (текущую).

Обратите внимание - отчеты будут выгружены с названиями папок. Таким образом обходится ситуация с одноименными отчетами в разных папках.
Если создадите на диске копию структуры папок SSRS, то для выгрузки отчетов по папкам запрос можно модицифировать следующим образом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 
      Name
     ,[Path]
     --,CONVERT(xml, CONVERT(varbinary(max), content)) AS Report
     ,'bcp "select convert(xml,convert(varbinary(max),content)) from '
		+quotename(db_name())
		+'.dbo.Catalog where name=''' 
		+Name
		+'''" queryout "'
		+'.'
		+replace(path,'/','\')
		+'.rdl" -S '
		+convert(varchar(200),@@servername)
		+' -T -c'  [extract command]
from dbo.[Catalog] 
where type=2 



Важно:
- запрос запускать в базе ReportServer;
- эккаунт, под котором запускается BCP и сама командная строка, должен иметь полный доступ к базе ReportServer;
- BCP использует аутентификацию Windows.

Если аутентификация SQL, то ключ "-T " надо заменить на "-U login -P password " со своими login и password.
...
Рейтинг: 0 / 0
06.11.2020, 13:09
    #40015918
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
кстати, полагаю, что этот топик для раздела "Отчетные системы"
...
Рейтинг: 0 / 0
06.11.2020, 13:36
    #40015928
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,

а, кстати, что вернет этот запрос?

Код: sql
1.
2.
3.
4.
select Name,count(1) [n]
from dbo.[Catalog] 
group by Name  
having count(1)>1  
...
Рейтинг: 0 / 0
06.11.2020, 14:33
    #40015964
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
komrad
dermama,

а, кстати, что вернет этот запрос?

Код: sql
1.
2.
3.
4.
select Name,count(1) [n]
from dbo.[Catalog] 
group by Name  
having count(1)>1  



Данный запрос вернул мне 94 строки,
с одинаковыми названиями отчетов, но в разных папках разных подкаталогов.
количество повторяющихся названий от 2 до 9

если просто подсчитать количество отчетов по названиям, то получается 953
...
Рейтинг: 0 / 0
06.11.2020, 14:46
    #40015969
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama

Данный запрос вернул мне 94 строки,
с одинаковыми названиями отчетов, но в разных папках разных подкаталогов.
количество повторяющихся названий от 2 до 9

если просто подсчитать количество отчетов по названиям, то получается 953


тогда выгружать надо по ID и раскладывать по папкам локально

исправленный скрипт
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 
      Name
     ,[Path]
     --,CONVERT(xml, CONVERT(varbinary(max), content)) AS Report
     ,'bcp "select convert(xml,convert(varbinary(max),content)) from '
		+quotename(db_name())
		+'.dbo.Catalog where ItemID=''' 
		+convert(varchar(200),ItemID)
		+'''" queryout "'
		+'.'
		+replace(path,'/','\')
		+'.rdl" -S '
		+convert(varchar(200),@@servername)
		+' -T -c'  [extract command]
from dbo.[Catalog] 
where type=2 
...
Рейтинг: 0 / 0
06.11.2020, 14:54
    #40015971
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
komrad
тогда выгружать надо по ID и раскладывать по папкам локально


скрипт на создание дерева папок SSRS в текущей папке

Код: sql
1.
2.
3.
select distinct 'mkdir ".'+replace(replace(path,name,''),'/','\')+'"' [create folders]
from catalog
where type=2 
...
Рейтинг: 0 / 0
06.11.2020, 15:52
    #40015989
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Нелегкая же дорога у тех, кто не желает пользоваться инструментами MS... Установите VS, добавьте инструментарий разработки баз данных, импортируйте отчеты в решение. Дальше - дело техники, поиск, замена, развертывание проекта.
...
Рейтинг: 0 / 0
08.11.2020, 12:51
    #40016310
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Visual Studio - инструмент явно не для администрации (/конфиг.) и не для мониторинга SSRS/PBIRS,
а для разработки (как правильно замечено выше) / контроля версий (тестирование и в некотором смысле - выгрузка, но не прод.)
(хотя держать в проекте VS как советуют в пред. посте - вообще-то стандарт, можно ещё готовить к релизам но не сами релизы на выпуск)

для этих целей у MS документирован REST API в основном, (SOAP {..asmx?wsdl..} уже списали несколько лет назад, но пока работает),
ну ещё частично конфигуратор, SSMS и несколько других примочек (не важно как ими работать, частая практика - через PowerShell)
Процедуры SSRS базы данных предназначены для внутренних целей сервиса, ну разве что таблицы можно для мониторинга использовать.
(прямая выгрузка от туда и загрузка напрямую в SQL - явный кактус)

Для пакетной обработки именно REST, в первую очередь, документировано (хоть и частичично кривовато)

Если не по фэн-шую (потому-что не предназначено) переписывать напрямую в базу
(против течения, там хоть и триггеров нет но наверное и хэши завязаны)
- то как кто-то выше намекал: запросто можно побить и ID-шники со слётом связей
к другим обьектам (и в др. системах, простейший пример: агент и подписки)
потерять настройки доступа/безопасности на отчётах,
и естественно искорёжить xранилище учётных данных / сбить ключи (крипта/шифрование)
на те-же источники данных при некоторых типах аутентификации - сервера которых меняет TS

REST API (метод GET) прекрасно даёт и список объектов (JSON) со свойствами (путь, размер, ID-шники и мн. пр.)
и сам объект (скачать) по пути либо ID, и предоставляет возможность положить объекты обратно на сервер
например: http://my-server/Reports/api/v2.0/CatalogItems
задачи такого класса (пакетного/массового обслуживания)
явно не для SQL (напрямую) и не для Visual Studio (хотя некоторые инструменты для этого там есть или хранятся/разрабатываются)
...
Рейтинг: 0 / 0
10.11.2020, 11:42
    #40016763
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
vikkiv


REST API (метод GET) прекрасно даёт и список объектов (JSON) со свойствами (путь, размер, ID-шники и мн. пр.)
и сам объект (скачать) по пути либо ID, и предоставляет возможность положить объекты обратно на сервер
например: http://my-server/Reports/api/v2.0/CatalogItems
задачи такого класса (пакетного/массового обслуживания)
явно не для SQL (напрямую) и не для Visual Studio (хотя некоторые инструменты для этого там есть или хранятся/разрабатываются)


Добрый день!
Спасибо за подробный ответ.
я нашел инфу на сайте swaggerhub с доступными командами по GET, POST и так далее - получилось выгрузить файл JSON по всем очтетам, попробовал также команды по datasource - выгружается инфа по всем Общим источникам данных - однако не получается выгрузить инфу по всем отчетам, с подробным описанием собственных коннектов отчета - такое возможно только если указывать ID какого либо отчета.

Плюс как я понял, для того чтобы пользоваться командами GET, POST и т.д необходимо сторонне ПО такое как Postman к приемру для CHROME, а нам нельзя устанавливать сторонее на удаленку по причинам безопасности.

Т.Е. по сути мне удалось выгрузить некую информацию по ссылке http://my-server/Reports/api/v2.0/CatalogItems
однако подробной информации о коннектах здесь нет.
Пробовал также http://my-server/Reports/api/v2.0/datasource - также общая инфа по общим коннектам.
...
Рейтинг: 0 / 0
10.11.2020, 11:48
    #40016767
dermama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama
vikkiv


REST API (метод GET) прекрасно даёт и список объектов (JSON) со свойствами (путь, размер, ID-шники и мн. пр.)
и сам объект (скачать) по пути либо ID, и предоставляет возможность положить объекты обратно на сервер
например: http://my-server/Reports/api/v2.0/CatalogItems
задачи такого класса (пакетного/массового обслуживания)
явно не для SQL (напрямую) и не для Visual Studio (хотя некоторые инструменты для этого там есть или хранятся/разрабатываются)


Добрый день!
Спасибо за подробный ответ.
я нашел инфу на сайте swaggerhub с доступными командами по GET, POST и так далее - получилось выгрузить файл JSON по всем очтетам, попробовал также команды по datasource - выгружается инфа по всем Общим источникам данных - однако не получается выгрузить инфу по всем отчетам, с подробным описанием собственных коннектов отчета - такое возможно только если указывать ID какого либо отчета.

Плюс как я понял, для того чтобы пользоваться командами GET, POST и т.д необходимо сторонне ПО такое как Postman к приемру для CHROME, а нам нельзя устанавливать сторонее на удаленку по причинам безопасности.

Т.Е. по сути мне удалось выгрузить некую информацию по ссылке http://my-server/Reports/api/v2.0/CatalogItems
однако подробной информации о коннектах здесь нет.
Пробовал также http://my-server/Reports/api/v2.0/datasource - также общая инфа по общим коннектам.


и соответственно как обратно постить измененную инфу (в случае если бы удалось добраться до подробного описания собственных коннектов отчета) не понятно на данный момент.
...
Рейтинг: 0 / 0
10.11.2020, 16:05
    #40016855
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,

300 отчетов, кстати, не так много, если не хотите пользоваться студией, то можно выполнить dowload каждого отчета, отредактировать и выполнить upload. За пару дней спокойно управитесь.
...
Рейтинг: 0 / 0
10.11.2020, 16:31
    #40016864
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Владислав Колосов dowload каждого отчета, отредактировать и выполнить upload+1
Гораздо дольше будет протестировать каждый отчет.

Заодно можно будет проделать рефакторинг: просмотреть на все отчеты, отделить нужные отчеты от остальных, сформировать источники данных

dermama количество повторяющихся названий от 2 до 9Нюхом чую бардак
...
Рейтинг: 0 / 0
10.11.2020, 17:24
    #40016888
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
SERG1257,

бардак однозначно, т.к. даже проекта нет.
...
Рейтинг: 0 / 0
10.11.2020, 17:37
    #40016893
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,

если лог настроен, то можете отбросить неактуальное старье
...
Рейтинг: 0 / 0
12.11.2020, 12:15
    #40017462
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Владислав Колосов
то можно выполнить dowload каждого отчета, отредактировать и выполнить upload. За пару дней спокойно управитесь.
Яркий пример как одним махом можно отбросить развитие IT индустрии на пол века назад списав на нет всё программирование
завтра посыпятся предложения по ведению баз данных на бумаге карандашом, а огонь разжигать огнивом




SERG1257
просмотреть на все отчеты, отделить нужные отчеты от остальных,
Это задача BA а не разработчика (или IT админа)
в нормалньой организации навряд-ли есть позиции где IT-шникам нечем заняться до такой степени что приходится самим себе изобретать занятие..
обычно с натяжкой хватает времени разгребсти существующую нагрузку (и какие задачи отбросить из-за недостатка ресурса)
...
Рейтинг: 0 / 0
12.11.2020, 12:31
    #40017466
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
dermama,

На swaggerhub более глубокое древо API команд чем CatalogItems и DataSources,
последняя применима для Shared DataSources а не для каждого отчёта
для данной конкретной задачи (именно .rdl отчёты) рекомендую посмотреть ветку /Reports с более селективными: /Report() и /Report(id)/DataSources

По инструменту проходящему принципы безопасников - из компилированных можно и C#/VB.NET (классом WebRequest или более новым WebClient )
разными вариантами (CLR напр.), кстати - эти языки встроены в SSIS, даже t-SQL
(но если сервер может стучаться наружу то как-бы не по фэншую, даже включение этой функциональности если сеть закрытая - т.е. для внутренних сервисов)

если вопрос прозрачности: из наглядных скриптовых методов - тот-же PowerShell
сейчас по быстрому накидаю чего-нибудь из примеров, может в архивах сырое что осталось..
...
Рейтинг: 0 / 0
12.11.2020, 13:16
    #40017488
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
Всё есть в API документации (но там многое криво если честно - всё в стадии разработке и дополнений по возможности),
покопался в сыром архиве по SSRS, на PowerShell
вот так можно просмотреть все существующие ConnectionString (напр. в Shared DS его нет) из DataSources (которых на отчёт может быть несколько) где есть *local*
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#=============
$ssrs_web="http://localhost/PBI"
[String]$srch="local"

[String]$ssrs_api=$ssrs_web+"/api/v2.0/Reports"
$tbl=New-Object System.Data.DataTable;$tbl.Columns.AddRange(@("Report","DataSource","ConnectionString","ReportId"))>$null
foreach($r in(Invoke-RestMethod -Uri $ssrs_api -UseDefaultCredentials).value|?{$_.HasDataSources -eq $true})
{foreach($ds in(Invoke-RestMethod -Uri ($ssrs_api+"("+$r.Id+")/DataSources") -UseDefaultCredentials))
{foreach($sr in $ds.value|?{$_.ConnectionString -ne $null -and $_.ConnectionString -like ("*"+$srch+"*")})
{$tbl.Rows.Add($r.Path,$sr.Name,$sr.ConnectionString,$r.Id)>$null}}}
$tbl|ft
#=============

вот так скачать все .rdl (xml) отчёты (для других объектов - другая API ветка) в одну папку (по ID) для послед. обработки как xml ноды или под более примитивную текстовую замену
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
#=============
$ssrs_web="http://localhost/PBI"
$download_dir="c:\tst\ssrs_id\in"

$ssrs_api=$ssrs_web+"/api/v2.0/Reports"
if((Test-Path $download_dir) -eq $false){New-Item -ItemType Directory -Force -Path $download_dir | Out-Null}
foreach($r in(Invoke-RestMethod -Uri $ssrs_api -UseDefaultCredentials).value|?{$_.Type -eq "Report"})
{Invoke-RestMethod -Uri ($ssrs_api+"("+$r.ID+")/Content/"+'$value') -UseDefaultCredentials -OutFile ($download_dir+"\"+$r.id)}
#=============


а вот так по полному пути (но я предпочитаю по ID т.к. как-то была проблема из-за слишком длинных путей при записи на сетевое хранилище, хотя и менее читабельно)
хотя такое уже приведено выше более простым (и не совсем рекомендованным) методом через t-SQL (не факт что на сервере разрешена такая функциональность в конфигурации SQL Server-а)
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#=============
$ssrs_web="http://localhost/PBI"
$download_dir="c:\tst\ssrs_id\dr"

$ssrs_api=$ssrs_web+"/api/v2.0/Reports"
foreach($r in(Invoke-RestMethod -Uri $ssrs_api -UseDefaultCredentials).value)
{$dr=$download_dir+$r.Path.Substring(0,$r.Path.LastIndexOf("/")).Replace("/","\")
if((Test-Path $dr) -eq $false){New-Item -ItemType Directory -Force -Path $dr | Out-Null}
Invoke-RestMethod -Uri ($ssrs_api+"("+$r.ID+")/Content/"+'$value') -UseDefaultCredentials -OutFile ($download_dir+$r.Path.Replace("/","\")+".rdl")}
#=============



вот так .rdl отчёт записывается на сервер (можно и развить пройдясь циклом для каждого обработанного отчёта в Out директории)
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#=============
$ssrs_web="http://localhost/PBI"
$rdl_name="my_report_test1"

$ssrs_api=$ssrs_web+"/api/v2.0/Reports"
$my_rdl = "C:\tst\ssrs_id\in\8d6dc5eb-8f7a-496a-bebb-798e356dc2b1"
$web_rdl=@{
    "@odata.type"="#Model.Report";
    "Content"=[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($my_rdl));
    "ContentType"="";
    "Name" = $rdl_name;
    "Path" = '/';
    }|ConvertTo-Json
Invoke-RestMethod -Uri $ssrs_api -Method Post -Body $web_rdl  -ContentType "application/json" -UseDefaultCredentials
#=============


судя по документации REST методом можно записать и саму коллекцию DataSources (JSON) для конкретного отчёта напрямую на сервер без отдельного сохранения в дисковых папках
(но это сам не делал, у нас немного другие задчи массового обслуживания SSRS инфраструктуры были)
или в самих rdl через xml навигацию XPath методом SelectSingleNode с InnerXML или InnerText поменять значение ConnectionString ноды
т.е. вместо REST метода PATCH на /CatalogItems(Id) - только PUT метод через /Reports(Id)/DataSources

так-же зависит от SSRS версии - у меня это работает на последнем релизе Power BI Report Server
...
Рейтинг: 0 / 0
12.11.2020, 19:01
    #40017681
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Reporting Service замена обращениий к серверам и БД
vikkiv,

готов поспорить, что Вы получили свои знания, которые продемонстрировали, не за пару дней, о которых я писал. А мой метод не требует никаких специальных знаний. Т.е. он эффективнее, учитывая однократность операции.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Reporting Service замена обращениий к серверам и БД / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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