【问题标题】:Extract the name of a Database which is used in a view (refering other Database)提取视图中使用的数据库的名称(引用其他数据库)
【发布时间】:2018-10-24 20:10:21
【问题描述】:

我动态创建引用其他数据库的视图(主要是从那里导入数据)

使用 [RezepteDB]

在这个数据库中,我创建了一个这样的视图

CREATE VIEW [dbo].bla as select * from ZutatenDB.dbo.Bla

稍后我需要数据库的名称,这是视图的基础。

对于这个例子,'ZutatenDB'。

我该怎么做?一个传递视图名称并返回数据库名称的小函数。

【问题讨论】:

  • 最简单的方法是在视图中添加一列额外的数据库名称。

标签: sql sql-server tsql dynamic


【解决方案1】:

一种技术是使用sys.dm_sql_referenced_entities:

SELECT *
FROM sys.dm_sql_referenced_entities ('dbo.bla', 'OBJECT');

您可以看到引用的服务器、数据库、架构和对象。

【讨论】:

  • 带有 DB_NAME() AS [DatabaseName] 的版本不起作用,因为列出了创建视图的名称,而不是引用了哪个数据库。
  • @ozz 是的,你是对的 - 你可以在创建时获取数据库名称并在视图定义中硬编码值。
猜你喜欢
  • 2017-08-16
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
相关资源
最近更新 更多