Редактировать - еще одно предложение
Пусть источник данных в Visual Studio указывает на базу данных разработки. Иметь развернутую точку источника данных в производственной базе данных. Установите источник данных, чтобы не перезаписывать существующие источники данных при развертывании. Это означает, что вся разработка в VS будет осуществляться против базы данных разработки, но при развертывании отчета он будет использовать ранее развернутый источник данных, который указывает на производственную базу данных.
Оригинальное предложение
У нас похожая проблема - у нас есть набор отчетов, которые должны быть в состоянии запускаться в любой из наших баз данных за прошлые финансовые годы, поэтому пользователь должен иметь возможность выбирать, для какой базы данных запускать отчет.
Сила служб Reporting Services заключается в том, что все является выражением, а SQL для набора данных не отличается. Что мы делаем, это модифицируем SQL для использования базы данных, выбранной пользователем.
Он настроен следующим образом:
На Sql Server в общей базе данных мы создаем таблицу с именем DatabaseLookup, которая имеет поля DatabaseLabel (отображаемое имя) и DatabaseName (фактическое имя базы данных) плюс INT SortOrder, чтобы мы могли упорядочивать базы данных последовательно в обратном порядке при создании нового один.
В службах Reporting Services мы создаем источник данных, который указывает на нашу общую базу данных, и новый набор данных под названием Базы данных, который использует этот источник данных:
SELECT DatabaseLabel, DatabaseName
FROM DatabaseLookup
ORDER BY SortOrder
Параметр настроен под названием База данных, в которой используется набор данных Базы данных с полем Значение = Имя_базы_данных и поле Метка = DatabaseLabel, а по умолчанию это незапрашиваемая база данных.
Теперь мы модифицируем SQL для нашей основной таблицы отчета в выражение. Допустим, наш SQL выглядит так:
SELECT SomeField, OtherField
FROM SomeTable
Мы превращаем это в вычисляемое выражение, вот так:
="SELECT SomeField, OtherField "
&"FROM " & Parameters!Database.Value & ".dbo.SomeTable "
Метка выбранной базы данных также включена в заголовок мелким шрифтом, чтобы люди знали, на какие данные они смотрят.
Когда наступает новый финансовый год, мы просто добавляем новую строку в нашу таблицу DatabaseLookup, и теперь каждый отчет в нашей системе может использовать эту новую базу данных.