Любая системная таблица или представление, содержащее информацию обо всех базах данных, схемах, таблицах и столбцах в SQL Server 2008? - PullRequest
0 голосов
/ 14 декабря 2011

Я пытаюсь найти системную таблицу или сделать несколько объединений, чтобы получить таблицу, в которой я могу найти все столбцы всех таблиц всех схем всех баз данных моего сервера.

Я делаю это для академических целей, поэтому я не могу использовать какую-либо хранимую процедуру или функцию, я должен создать ее сам.

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

Есть идеи?Как я уже сказал, я не могу использовать для этого никакие хранимые процедуры или функции.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

В схеме sys есть таблицы, которые могут представлять интерес.sys.database, sys.schemas, sys.tables, sys.columns, которые можно легко объединить и отфильтровать по вашим потребностям.

sp_msforeachdb 'SELECT t.name FROM [?].sys.schemas s INNER JOIN [?].sys.tables t ON s.[schema_id] = t.[schema_id] INNER JOIN [?].sys.columns c ON c.[object_id] = t.[object_id]';

0 голосов
/ 14 декабря 2011

Это то, что вам нужно для всех столбцов всех таблиц в текущей базе данных, доступных для прямого пользователя:

http://msdn.microsoft.com/en-us/library/ms188348.aspx

Чтобы найти то же самое во всех базах данных, вам необходимо подключиться к каждой из баз данных, а затем получить доступ к системному представлению.

Если вы подключитесь как пользователь dba, у вас будет доступ ко всем таблицам во всех схемах.

...