c# - C# & SQL Server 存储过程多个插入动作,影响?
问题描述
我有一个应用程序,它使用存储过程将数据表插入到我的 SQL Server 中。在运行时,它会访问数据库,使用一个存储过程和一个表来做几个插入动作。但它如何影响我的数据库?
例如我有
- 5 个数据表 (dt1..dt5)
- 1 表 (tb1)
- 1个存储过程
在运行时,所有 dt 都在其自己的任务中处理。
每个任务都会进行一些数据操作,最后通过存储过程将它们存储到 SQL Server 中tb1
。
但是,如果我这样做,会有什么影响呢?这些数据表会一个接一个地追加吗?
这里有一些代码:
public static void CreateTasks(string sInput, string sOutput)
{
List<Task> Tasks = new List<Task>();
string Filename = Path.GetFileName(sInput).Replace(" ", "_").Replace("\\", "_");
...
// Stores datatable via stored procedure into SQL Server
Tasks.Add(Task.Factory.StartNew(() => StoreDataInSQL(sInput, sOutput, Filename)));
...
Task.WaitAll(Tasks.ToArray());
}
解决方案
我对您的问题的解释:“当您同时执行/对同一个表进行多次更改时会发生什么”。
答案:这取决于....取决于很多事情,尤其是您的 SP 代码的工作原理(以及如何工作)。
在简单插入的情况下:它将附加所有插入。
这看起来像是一篇关于表锁定和事务的好文章:https ://docs.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide?view= sql-server-2017
推荐阅读
- reactjs - 强制 SSL 后无法访问 Web 清单
- sas - 错误说没有给出变量 X,但变量 x 是在之前声明的
- docker - 无法运行 docker-compose
- java - java服务器和gamemaker studio客户端如何正确通信
- java-ee-7 - 找不到豆子
- kotlin - 使用导航组件在 BottomNavigationView 中传递参数
- c++ - 如何在opengl中正确升级纹理?
- ios - iPhone金属纵向和横向模式之间的奇怪差异
- pytorch - PyTorch 入门示例不起作用
- objective-c - 以什么顺序调用方法 +initialize 和 +load?