回答

收藏

在SQL中与多个用户一起处理插入和删除

技术问答 技术问答 93 人阅读 | 0 人回复 | 2023-09-12

我想维护一个使用ADO该方法通过数据Excel上传到SQL Server系统。该过程包括两个步骤:) q$ g- ^: j; |
[ol]原始数据插入临时表,如 dbo.TableTemp' G/ b8 L/ z* V% g4 I) q% I7 b
原始数据通过存储过程进行处理,并插入到 dbo.GoodTable
) t+ A. n: \1 Q' Y7 udelete from dbo.TableTemp存储过程结束时 [/ol]如何确保两个用户的活动不重叠?delete fromdbo.TableTemp在user2插入数据和处理数据之前不会执行user1的?+ j( Q2 v5 K+ ?1 d
更新。
1 ^- K8 D, \% T: T$ \不幸的是,我在#temp表格还没有成功。当我试图插入数据时,它们似乎太临时了。#temps已经不存在了。我用它来上传数据。Sergey
% Y! C8 y& v( EVaselenko从这里下载各种代码:http :
* S/ m1 b; ^% O- [//www.excel-sql-server.com/excel-sql-server-import-export-using-
# n! t) ?1 [$ t. @1 {1 F& X: wvba.htm#Excel从数据导出到使用ADO的SQL Server( t' i4 ?5 `% s3 B9 F6 ~
在Sergey在解决方案中,您可以在步骤1中插入数据之前根据存储过程创建表。但是,当我#temp用存储过程创建表时,它在过程结束时消失了,因此无法插入数据。有什么帮助吗?- J  [! {  G2 B* P( t9 Y+ V8 |" x: ~
                                                                ; V% j- B: X6 I3 S0 S
    解决方案:                                                                * Y& O+ E( ]: k- Z6 n2 x
                                                                使用临时表 #TableTemp。这些特定于每个会话,因此不会重叠。
% k* S; n% q0 H3 M  ]7 Q; q  i' Y有两种临时表:本地和全球。它们的名称、可见性和可用性是不同的。当地临时表的第一个字符有一个数字符号(#)。当用户与用户之间的当前连接只能看到,SQL! t7 U5 h. t! {: K+ m3 a2 y) x
Server当实例断开连接时,它们将被删除。全局临时表有两个数字符号(##)作为其名称的首字符;它们在创建后可以看到任何用户,当所有引用表的用户和SQL
+ e) R! r  S/ [5 v  |Server当实例断开连接时,它们将被删除。
% x( M/ l2 S9 Y" r( Q更新。    看起来很特别Excel-SQL Server Import-Export使用VBA每次打开和关闭自己的连接时,使用单独的函数创建表并上载数据。SQL
/ f* H+ G; e# O( Y" KServer从不同的角度来看,这些功能在不同的会话中运行,因此临时表不会持久。我认为解决方案可以重写为使用单个连接创建临时表,填写、处理数据并将结果输出到永久表中。; O% k$ a, @8 j6 S; P) x1 W! G
你也可能会发现以下问题很有用:如何Excel中的VBA中使ADODB.Connection持久?尤其是 -Kevin Pope
+ Z' e. d# D9 b  a& S建议使用工作簿本身打开和关闭的全球连接变量:) P4 L3 |2 T2 Y
Global dbConnPublic As ADODB.Connection在“ ThisWorkbook”对象中:6 w1 x/ U% _7 H
Private Sub Workbook_Open()    Set dbConnPublic = openDBConn() 'Or whatever your DB connectionfunction is called! w% a6 g# E1 u
                End Sub, y7 e" `' i4 R. ]6 _
                Private Sub Workbook_BeforeClose(Cancel As Boolean)1 L4 N& Z5 Z4 q: C; H( {9 {8 h# U
                                dbConnPublic.Close7 Z. F; H* w0 l5 e* I4 U6 X
                End Sub
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则