小编Ron*_*ldo的帖子

即使 SQL Server 无法为查询授予请求的内存,查询是否仍然运行?

我今天正在考虑类似的事情,但找不到这条信息。

当 SQL Server 请求内存而操作系统无法提供内存时,我们会得到RESOURCE_SEMAPHORE等待类型。

但我找不到类似的信息:

  1. 假设查询要求 3GB。但只能提供2,查询是否仍然运行缓慢,或者一直在那里等待?

  2. RESOURCE_SEMAPHORE意味着查询处于“停止”状态只是等待内存?

  3. 待处理的内存授予应该始终为 0,对吗?这意味着查询正在请求多少内存但仍在等待,对吧?

我正在阅读Microsoft 的《内存授予:神秘的 SQL Server 内存消费者与许多名字》,但它没有解释这一点,它只是解释了什么是内存授予。

sql-server memory memory-grant

1
推荐指数
1
解决办法
329
查看次数

如何仅选择其子表在其他表中引用的记录?

不确定问题的措辞是否正确,但这里有一个架构示例:

CREATE TABLE TabA (Id INT NOT NULL, PRIMARY KEY (Id));

CREATE TABLE TabB (
    Id INT NOT NULL, 
    TabAId INT, 
    PRIMARY KEY (Id),
    FOREIGN KEY (TabAId) REFERENCES TabA(Id)
)

CREATE TABLE TabC (
    Id INT NOT NULL, 
    TabAId INT, 
    PRIMARY KEY (Id),
    FOREIGN KEY (TabAId) REFERENCES TabA(Id)
)
Run Code Online (Sandbox Code Playgroud)

我需要做的是选择或(或两者)中的记录引用的TabA.Id位置。如果我以编程方式翻译这个:TabA.IdTabBTabC

type B = { Id : int }

type C = { Id : int }

type A = { ItemsB : B list ; …
Run Code Online (Sandbox Code Playgroud)

join sql-server

0
推荐指数
1
解决办法
2072
查看次数

表 X 上的更新如何锁定表 Y?

我们处于这样的情况:选择被更新阻止。但表格不同。

UPDATE [dbo].[TABLE_1]
SET ...

SELECT [t1].[field]
FROM [dbo].[TABLE_1] AS [t1]
WHERE...
Run Code Online (Sandbox Code Playgroud)

当它们同时运行时,这个简单的过程会阻塞这个过程:

SELECT "A lot of fields"
FROM TABLE_TOTALLY_DIFFERENT
INNER JOIN [another table totally different] 
ON...
WHERE...
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义。

即使通过查看 pageID,我也可以看到在这种情况下被锁定的表是TABLE_TOTALLY_DIFFERENT.

但他们与他们无关。

我如何查找并确定它们被锁定的原因?

sql-server sql-server-2012 locking

0
推荐指数
1
解决办法
74
查看次数

T-SQL 不支持相关的 CROSS JOIN 吗?

这个查询有效

SELECT      QMC.HAUSKEY, t1.STRNAME, t2.HAUS_NR
FROM        SWOPS.MIGR.QMCAddresses QMC
CROSS JOIN  (SELECT STRNAME FROM SWOPS.MIGR.EB_DICT_STREET_QMC  WHERE FK=8055909) t1
CROSS JOIN  (SELECT HAUS_NR FROM SWOPS.MIGR.EB_DICT_HAUSNR_QMC  WHERE FK=8055909) t2
WHERE       1=1
        AND QMC.HAUSKEY=8055909
ORDER BY    HAUSKEY, t1.STRNAME, t2.HAUS_NR
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,当我用列引用 QMC.HAUSKEY 替换 CROSS JOIN 子查询中的常量 8055909 时,查询报告错误

Msg 4104, Level 16, State 1, Line 56 The multi-part identifier "QMC.HAUSKEY" could not be bound.

这是为什么?

背景:

QMCAddresses 包含建筑物及其地址

EB_DICT_STREET_QMC 包含 QMCAddresses 中地址的街道名称的可能变体

EB_DICT_STREET_HAUSNR 包含 QMCAddresses 中地址的门牌号的可能变化

我想做的是为每个建筑物地址创建一个笛卡尔积,其中包含其街道名称的所有可能变体和门牌号的所有可能变体。

例如

在此输入图像描述

sql-server t-sql subquery cross-join

0
推荐指数
1
解决办法
227
查看次数