我需要在完成之前从存储过程返回部分结果(作为简单的选择)。
有可能这样做吗?
如果是,如何做到这一点?
如果没有,有什么解决方法吗?
编辑:我有几个部分的程序。在第一部分我计算了几个字符串。我稍后会在过程中使用它们来进行附加操作。问题是调用者尽快需要字符串。因此,我需要计算该字符串并将其传回(不知何故,例如从选择中),然后继续工作。调用者更快地获得其有价值的字符串。
调用者是一个 Web 服务。
stored-procedures t-sql sql-server-2012 multi-thread web-service
我公司想了解一下效果:
如果我们有一个带有主键标识列的表,int 主键 IDENTITY(1,1),
并且应用程序正在进行多线程并行处理,试图在一张表上同时进行 1000 次插入。
身份主键列是否会失败,以任何方式违反主键,例如:处理器正在尝试输入相同的身份编号?
或者 SQL 被设计成即使在多线程并行插入中也能成功?
注意:IDENTITY_INSERT 关闭
database-design sql-server primary-key concurrency multi-thread
我使用 64 位操作系统和两个 CPU(每个 CPU 有 7 个逻辑处理器),逻辑处理器总数等于 14。
当我运行此代码时,我得到2048
SELECT max_workers_count FROM sys.dm_os_sys_info
Run Code Online (Sandbox Code Playgroud)
另一方面,当我使用下面的公式时,我得到了完全不同的数字,即672
For a 64-bit operating system:
Total available logical CPUs <= 4
Max Worker Threads = 512
Total available logical CPUs > 4
Max Worker Threads = 512 + ((logical CPUs - 4)*16)
Run Code Online (Sandbox Code Playgroud)
你能向我解释为什么我得到不同的数字吗?我在另一台服务器上对其进行了测试,两种情况的数字都完全相同。
编辑
PS 感谢 Dan Guzman 建议检查最大工作线程的服务器设置。这就是 EXEC sp_configure 'max worker threads' 返回的内容: