Sql server 如何从SQL Server或Tableau桌面加载临时表?

Sql server 如何从SQL Server或Tableau桌面加载临时表?,sql-server,tableau-api,Sql Server,Tableau Api,我有三个SQL查询结果批量保存在SQL Server数据库中的三个临时表中,但当从tableau连接到数据库时,这些临时表在tableau中似乎不可用 例如: 创建临时表p CREATE TABLE #p ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); 从主表向p中插入值 insert i

我有三个SQL查询结果批量保存在SQL Server数据库中的三个临时表中,但当从tableau连接到数据库时,这些临时表在tableau中似乎不可用

例如:

创建临时表p

CREATE TABLE #p 
(
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) 
);
从主表向p中插入值

insert into #p 
    select * 
    from Persons 
    where PersonID in (1, 2, 3);
连接到tableau中的SQL Server数据源后,p temp表不会显示在表列表中。是否有任何可能的方法可以将tableau中的临时表用于仪表板?如果没有,请就如何在仪表板中提供这些临时表提出一些备选方案


在过去的几天里,我一直在努力解决这个问题,希望很快能听到你们的建议。谢谢

本地临时表是会话范围的,这意味着它们仅在生成它们的同一会话中可见

如果希望SQL Server使用的全局临时表在其他会话中可见,则可以在其名称或普通表前面尝试使用它们


本地和全局临时表都将在生成它们的会话关闭时消失。

本地临时表是会话范围的,这意味着它们仅在生成它们的会话中可见

如果希望SQL Server使用的全局临时表在其他会话中可见,则可以在其名称或普通表前面尝试使用它们


本地和全局临时表都将在生成它们的会话关闭时消失。

临时表(包括全局临时表)将在没有更多连接访问它们时自动删除。话虽如此,有两种方法可以实现您在Tableau中试图实现的目标

一,。带有临时表的初始SQL

Tableau有一个“初始SQL”选项,您可以在定义连接时选择该选项。每次Tableau连接到服务器时,都会执行这些语句。请注意,临时表是在tempdb中创建的;因此,您必须将数据库更改为tempdb。您还必须在SQL中使用完全限定表名。请特别注意突出显示的区域

二,。存储过程

如果您有足够的访问权限,可以将查询创建为存储过程并从Tableau中调用它。存储过程将显示为表下的一个单独部分


临时表(包括全局临时表)将在没有更多连接访问它们时自动删除。话虽如此,有两种方法可以实现您在Tableau中试图实现的目标

一,。带有临时表的初始SQL

Tableau有一个“初始SQL”选项,您可以在定义连接时选择该选项。每次Tableau连接到服务器时,都会执行这些语句。请注意,临时表是在tempdb中创建的;因此,您必须将数据库更改为tempdb。您还必须在SQL中使用完全限定表名。请特别注意突出显示的区域

二,。存储过程

如果您有足够的访问权限,可以将查询创建为存储过程并从Tableau中调用它。存储过程将显示为表下的一个单独部分


@毛罗……非常感谢您的快速回复!我清楚地得到了你的答案……但我所说的问题是,如果我们对普通表进行更改,office数据库中的旧批量sql查询可能会中断……因此,您可以建议在tableau dashboard中使用此临时表吗?@devijayakumar您可以尝试使用Glabal临时表,前提是生成它们的会话是当Tableau会话读取相同的全局临时表时,仍然处于活动状态。很抱歉,我尝试了全局临时表,它也有类似的问题,即使会话处于活动状态,也不会反映在Tableau表列表中。-@mauro。非常感谢您的快速回复!我清楚地得到了你的答案……但我所说的问题是,如果我们对普通表进行更改,office数据库中的旧批量sql查询可能会中断……因此,您可以建议在tableau dashboard中使用此临时表吗?@devijayakumar您可以尝试使用Glabal临时表,前提是生成它们的会话是当Tableau会话读取相同的全局临时表时仍然活着抱歉这么说..我尝试了全局临时表,它也有类似的问题,即使会话处于活动状态,也不会反映在Tableau表列表中..:-非常感谢您帮助我解决问题..只是怀疑即使在数据库不可用的情况下,Tableau中是否可以访问此过程在SQL服务中处于非活动状态..就像我暂时断开了连接一样@Devijayakumar,如果你需要离线访问你的数据,请查看Tableau Extracts感谢你对我的帮助。这个过程是否可行
即使数据库在SQL服务中处于非活动状态,也可以在Tableau中访问..就像我暂时断开了连接一样@Devijayakumar,如果您需要离线访问数据,请查看Tableau摘录