Я успешно извлекаю определения столбцов из баз данных, размещенных на сервере SQL, с помощью OpenSchema()
вызова ADO Connection в его различных воплощениях, поэтому я могу программно воссоздать эти таблицы в другой базе данных SQL. Все идет нормально.
Основное взаимодействие с приведенными выше таблицами происходит с использованием нескольких представлений; хотя OpenSchema()
может возвращать определения столбцов для представления таким же образом, как и определения столбцов для таблицы, отсутствует важный бит информации - какой таблице и столбцу в базовых таблицах сопоставлен столбец в представлении.
Я попытался получить доступ к команде SQL, использованной для создания представления с помощью представлений каталога ADOX, но оказалось, что используемый нами драйвер OLEDB для SQL Server не поддерживает эту функцию.
Есть ли способ получить эту информацию для конфигурации представления через ADO, либо способом, который гласит, что «ColumnX сопоставляется с ColumnY в таблице Z», либо в форме фактической команды SQL, используемой для создания представления?
источник
select m.definition from sys.sql_modules m where m.object_id = object_id('dbo.MyView', 'V')
sys.sql_modules
определяет столбец следующим образом:definition nvarchar(max) SQL text that defines this module. NULL = Encrypted.
[n][var]char
данные обрезаются до 256 символов. Вы можете изменить это в меню наQuery..Query Options...
& mdash; В открывшемся модальном диалоговом окне перейдите кResults>Text
узлу в дереве слева.Microsoft перечислила следующие методы получения определения представления: http://technet.microsoft.com/en-us/library/ms175067.aspx
USE AdventureWorks2012; GO SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound FROM sys.sql_modules WHERE object_id = OBJECT_ID('HumanResources.vEmployee'); GO
USE AdventureWorks2012; GO SELECT OBJECT_DEFINITION (OBJECT_ID('HumanResources.vEmployee')) AS ObjectDefinition; GO
источник
Для пользователей SQL 2000 настоящая команда, которая предоставит эту информацию:
select c.text from sysobjects o join syscomments c on c.id = o.id where o.name = '<view_name_here>' and o.type = 'V'
источник
SELECT object_definition (OBJECT_ID(N'dbo.vEmployee'))
источник
Вы можете получить подробную информацию о таблице / просмотре с помощью запроса ниже.
Для таблицы: sp_help table_name Для представления: sp_help view_name
источник
SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound FROM sys.sql_modules WHERE object_id = OBJECT_ID('your View Name');
источник