我在我们的一个数据库中有一个视图,我需要找出视图中的值来自哪里
我该怎么做? (SQL Server 管理工作室)
试试这个
sp_helptext viewname
这将为您提供视图文本,您可以从那里了解表格及其列。
SELECT TABLE_NAME, VIEW_DEFINITION FROM INFORMATION_SCHEMA.Views WHERE TABLE_NAME='view_Name'
在 SQL Server Management Studio 中,转到对象资源管理器,找到您感兴趣的视图,右键单击它,然后选择
Script View As > CREATE To > New Query Editor Window
定义视图并因此显示它所依赖的所有基表的 SQL 脚本将为您编写一个新的查询编辑器窗口。
或者在 Management Studio 中,您还可以使用
sp_depends
系统存储过程来获取对象的所有依赖项:
EXEC sp_depends @objname = N'HumanResources.vJobCandidate'
给你一个输出:
获取视图列
SELECT
[c].*
FROM
[INFORMATION_SCHEMA].[COLUMNS] [c]
INNER JOIN [INFORMATION_SCHEMA].[TABLES] [t] ON [c].[TABLE_CATALOG] = [t].[TABLE_CATALOG] AND [c].[TABLE_SCHEMA] = [t].[TABLE_SCHEMA] AND [c].[TABLE_NAME] = [t].[TABLE_NAME]
WHERE
[t].[TABLE_TYPE] = 'VIEW'
使用系统进程:
sp_helptext 'my_schema.vw_view_name'
SELECT
[v].[TABLE_SCHEMA]
, [v].[TABLE_NAME]
, [v].[VIEW_DEFINITION]
FROM
[INFORMATION_SCHEMA].[views] [v]
SELECT * FROM [INFORMATION_SCHEMA].[VIEW_COLUMN_USAGE]
这里有一个信息量更大的查询,它返回所有视图列。
BASED_ON_TABLE_IS_KNOWN
列是一个标志,表示是否找到了视图列的基表/视图列。
SELECT
IIF([cu].[VIEW_NAME] IS NULL ,'N' ,'Y') [BASED_ON_TABLE_IS_KNOWN]
, [c].[TABLE_CATALOG] [VIEW_CATALOG]
, [c].[TABLE_SCHEMA] [VIEW_SCHEMA]
, [c].[TABLE_NAME] [VIEW_NAME]
, [c].[COLUMN_NAME] [VIEW_COLUMN_NAME]
, [cu].[TABLE_NAME] [BASED_ON_TABLE_NAME]
, [cu].[TABLE_SCHEMA] [BASED_ON_TABLE_SCHEMA]
, [cu].[TABLE_CATALOG] [BASED_ON_TABLE_CATALOG]
, [cu].[COLUMN_NAME] [BASED_ON_COLUMN_NAME]
, c.[DATA_TYPE]
FROM
( [INFORMATION_SCHEMA].[COLUMNS] [c] INNER JOIN [INFORMATION_SCHEMA].[TABLES] [t]
ON [c].[TABLE_CATALOG] = [t].[TABLE_CATALOG] AND [c].[TABLE_SCHEMA] = [t].[TABLE_SCHEMA] AND [c].[TABLE_NAME] = [t].[TABLE_NAME] )
LEFT OUTER JOIN [INFORMATION_SCHEMA].[VIEW_COLUMN_USAGE] [cu]
ON [c].[COLUMN_NAME] = [cu].[COLUMN_NAME] AND [cu].[VIEW_CATALOG] = [t].[TABLE_CATALOG] AND [cu].[VIEW_SCHEMA] = [t].[TABLE_SCHEMA] AND [cu].[VIEW_NAME] = [t].[TABLE_NAME]
WHERE
[t].[TABLE_TYPE] = 'VIEW'
AND [t].[TABLE_NAME] = 'vw_invoice_main'
AND [t].[TABLE_SCHEMA] = 'dev_test_example_2'
SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE