2013-06-14 3 views
-1

Каким будет оператор SQL SELECT для возврата строки из всех баз данных на сервере, но только из определенной таблицы и некоторых столбцов таблицы.Возвращает строку из всех таблиц и всех баз данных?

Или, в псевдокоде, что-то вроде этого:

for each(database) 
{ 
    return database.column.row; 
} 
+2

Вы можете использовать курсор для прокрутки всех баз данных в представлениях sys.databases. А затем динамически создайте запрос, используя столбец имен в sys.databases. –

+0

@ user1948904, да, пока я искал эту тему, я сталкивался с этим. Но я боюсь, что мои знания в SQL-запросах ограничены ... – GeorgeCross

+0

Похожие http://stackoverflow.com/questions/2875768/how-do-i-list-all-tables-in-all-databases-in-sql -server-в-одном-множества результатов – PiLHA

ответ

0

Это не тестировалось, но должно быть достаточно, чтобы вы начали.

DECLARE @name as NVARCHAR(128); 
DECLARE @sql AS NVARCHAR(max); 

DECLARE c_Cursor CURSOR FOR 
SELECT databases.name 
    FROM sys.databases 
WHERE databases.database_id > 4 
ORDER BY databases.name; 

OPEN c_Cursor; 

FETCH NEXT FROM c_Cursor 
INTO @name; 

WHILE @@FETCH_STATUS = 0 
BEGIN 

    SET @sql = N'SELECT table.* FROM ' + QUOTENAME(@name) + N'.dbo.table'; 

    EXEC @sql 

    FETCH NEXT FROM c_Cursor 
    INTO @name; 

END; 

CLOSE c_Cursor; 
DEALLOCATE c_Cursor; 
Смежные вопросы