Tôi sẽ lưu trữ để nhận truy vấn lấy dữ liệu từ tất cả các cơ sở dữ liệu và trả về một tập kết quả.SQL Server: sp_MSforeachdb thành tập hợp kết quả đơn
Ngay bây giờ tôi có như sau:
DECLARE @command varchar(4000)
SELECT @command = '
USE [?]
SELECT
database_name = DB_NAME(database_id)
, log_size_mb = CAST(SUM(CASE WHEN type_desc = "LOG" THEN size END) * 8./1024 AS DECIMAL(8,2))
, row_size_mb = CAST(SUM(CASE WHEN type_desc = "ROWS" THEN size END) * 8./1024 AS DECIMAL(8,2))
, total_size_mb = CAST(SUM(size) * 8./1024 AS DECIMAL(8,2))
, Kostenstelle = (select value from sys.extended_properties WHERE name = "Kostenstelle")
FROM sys.master_files WITH(NOWAIT)
WHERE database_id = DB_ID()
GROUP BY database_id
'
EXEC sp_MSforeachdb @command
Đoạn mã trên sẽ trở lại trong nhiều bộ kết quả.
Kết quả sẽ trông giống như sau:
|database_name|log_size_mb|row_size_mb|Kostenstelle|
+-------------+-----------+-----------+------------+
|demoA | 12| 10| xxxx|
|demoB | 52| 12| xxxx|
tốt, có điều đó sẽ có thể nhưng mong muốn của tôi là không t sử dụng một bảng nếu có thể. Tôi cũng đã cố gắng để tạo ra một bảng tạm thời trong bộ nhớ với khai báo @ mytable bảng ... nhưng nó đã không làm việc cho tôi vì "mytable không có sẵn bên trong vòng lặp ms_foreachdb :-( – Alex