首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server中临时表的ASynchronous创建

Server中临时表的ASynchronous创建
EN

Stack Overflow用户
提问于 2019-05-06 18:17:45
回答 2查看 267关注 0票数 0

目前,我正试图确定从web应用程序创建临时表时可能出现的问题,以及Server如何自然地确定单独的会话。

代码语言:javascript
复制
SELECT blabla, lala FROM table INTO #TempTable
SELECT blabla FROM #TempTable
DROP TABLE #TempTable

在上面,当一个web应用程序的一个用户在等待第二行执行,而另一个用户触发相同的3行时,如何确定第二个用户是否得到一个“对象已经存在”,或者为该用户创建一个新的#TempTable。

如果每个用户都在同一网络上的另一台计算机上,SQL server是否会将其视为单独的会话,从而创建单独的临时表。

如果它在两个不同的网络上运行在同一台计算机上呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-06 18:30:34

到数据库的每个用户连接都是自己的会话。即使在Server中使用连接池,这些会话也是唯一的。在幕后,SQL Server用单个会话引用号追加每个#tempTable,因此在执行过程中,它们的名称在技术上甚至不相同。

如果问题的根源是有关调试时已经存在的对象的错误消息。在创建临时表之前,尝试添加下面的代码片段:

代码语言:javascript
复制
IF OBJECT_ID('[tempdb]..[#tempTable]') IS NOT NULL
BEGIN
    DROP TABLE #tempTable
END
票数 1
EN

Stack Overflow用户

发布于 2019-05-06 19:50:50

Server不确定单独的会话。

创建会话的是客户端应用程序。您可以编写一个应用程序,其中数据库的所有通信都使用单个连接(不太容易),或者为每个页面创建单独的连接(常见错误)。这两种解决方案都很糟糕。

在正确的设计中,您应该使用连接池,并且您的代码应该根据需要从连接池中保留连接。

即使使用连接池,每个命令也有可能在与池不同的连接上执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56010443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档