Potrzebuję sposobu, aby programowo uzyskać nazwę bazy danych serwera raportów. Mogę otworzyć Eksplorator obiektów w Studio Zarządzania Server i zobacz tam bazy tam, jednak idealnie, muszę to uzyskać za pośrednictwem kodu i czy wrócił do zmiennej, więc mogę użyć go później w moim zapytaniu, aby uchwycić dane z a Widok w ramach tej bazy danych, w przypadku nazwy bazy danych serwera raportów zawsze się zmienia, dzięki.

1
D Kerka 4 czerwiec 2018, 22:50

3 odpowiedzi

Najlepsza odpowiedź

Oto sposób na sp_msfeaachdb

create table #myDatabases (dbname sysname)

insert into #myDatabases
exec master.sys.sp_MSforeachdb 'USE [?]; select db_name() where exists (select 1 from sys.objects where name = ''CreateDataDrivenNotification'')'

select * from #myDatabases where dbname is not null

drop table #myDatabases

Chciałbym również Przeczytaj ten blog O to proc. Zakłada się, że żadne bazy danych użytkownika nie ma obiektu (PROC w tym przypadku) CreateDataDrivenNotification, co jest całkiem wyjątkowe, myślę. Możesz sprawdzić innych, aby uczynić go bardziej "Bulletproof" jak SetDrillthroughReports

0
scsimon 4 czerwiec 2018, 20:25

Możesz użyć DB_NAME() AS:

SELECT DB_NAME();
ALTER DATABASE OldName MODIFY NAME = NewName;
SELECT DB_NAME(); --Get the name even after the db name has been changed

Z Dokumentów Online:

baza danych jest numerem identyfikacyjnym (ID) bazy danych do zwracania. bazy danych jest int, bez domyślnie. Jeśli nie określono identyfikatora, bieżąca nazwa bazy danych jest zwracana.

Więc może być konieczne przekazanie database_id, aby uzyskać to, co chcesz.

Na przykład:

SELECT DB_NAME(1) AS DB_Name;

Powrót:

+---------+
| DB_Name |
+---------+
| master  |
+---------+

Wreszcie można zmienić database_id, jeśli DB zostanie uruchomiony lub ponownie utworzony.

1
Sami 4 czerwiec 2018, 20:35

Jeśli mówisz o bazy danych, raporty są uruchomione, użyj DB_NAME(), jak sugerowane inne.

Jeśli mówisz o bazie danych ReportServer, nie martw się - nie można go przemianować (a raczej, nazwa przełamałaby wiele innych rzeczy).

Zmiana przeglądania bazy danych serwera raportów nie jest obsługiwana, ponieważ bazy danych serwera raportów są uważane za elementy wewnętrzne.

(Źródło)

0
gnud 5 czerwiec 2018, 18:31