我知道这是一种奇怪的要求。直到今天,我自己都从来没有想过这样的场景。我会直奔主题,使问题易于阅读。我怀疑正确的答案将更多地涉及“跳出框框思考”,而不是我不知道的隐藏功能或功能。
事情是这样的:我需要一个 PowerBI 仪表板来查询我的 SQL Server,但 PowerBI 仪表板将有一个查询数据库的连接字符串(我们称这个数据库为“DatabaseOne_Report”),而 SQL Server 将托管一个具有不同名称的数据库(比方说“DatabaseOne”)。
因此,当 PowerBI 仪表板对 DatabaseOne_Report.dbo.MyTable 运行查询时,我希望 SQL Server 提供来自 DatabaseOne.dbo.Table 的数据(注意“_Report”后缀已从数据库名称中消失)。这甚至有可能吗?
我可以预料到您的第一个问题是为什么我使用带有错误数据库名称的连接字符串。答案是这个仪表板连接到不同的环境,并且这些环境使用 2 个不同名称中的一个来托管这个数据库,原因超出了我在这里询问的范围。底线是我们试图避免重写 PowerBI 仪表板的连接字符串,并希望我们可以使用单个连接字符串来处理两个可能的数据库名称。
我在不同的论坛上阅读了很多问题,以解决托管在不同盒子中的 2 个数据库的别名,但从未见过有人询问托管在同一个盒子中但可能有两个不同名称的 2 个数据库。
我想过用另一个名称创建一个空的数据库“外壳”,除了同义词之外什么都没有,但这将是很多配置......我希望找到更简单的东西。
谢谢!
我看到两个选项。
McNets 评论中提到的SQL 别名。但我不确定它是否适用于您的场景,当它起作用时,它是一个很棒的工具。
使用SQL 复制创建同一服务器上
DatabaseOne
命名的数据库的副本。DatabaseOne_Report
根据几个变量,两个版本的数据库将完全同步到延迟一点。这是它的样子: