小编MDC*_*CCL的帖子

使用不同域中的 Windows 身份验证连接到 SQL Server

我正在尝试连接到不同域中 VPN 上的远程 SQL Server。当我在 SQL Server 上输入服务器名称并选择其他连接参数以添加我学校需要的一些额外内容时:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

登录失败。登录名来自不受信任的域,不能与 Windows 身份验证一起使用。

authentication sql-server logins

96
推荐指数
2
解决办法
23万
查看次数

我如何知道要为表创建哪些索引?

有没有办法找出知道为表创建哪些索引的最佳方法?

postgresql database-design index-tuning

40
推荐指数
2
解决办法
2万
查看次数

在递归公用表表达式中使用 EXCEPT

为什么以下查询返回无限行?我本来希望该EXCEPT条款终止递归..

with cte as (
    select *
    from (
        values(1),(2),(3),(4),(5)
    ) v (a)
)
,r as (
    select a
    from cte
    where a in (1,2,3)
    union all
    select a
    from (
        select a
        from cte
        except
        select a
        from r
    ) x
)
select a
from r
Run Code Online (Sandbox Code Playgroud)

我在尝试回答Stack Overflow 上的一个问题时遇到了这个问题

sql-server-2008 sql-server execution-plan recursive except

33
推荐指数
2
解决办法
1万
查看次数

避免使用 SQL Server 的默认端口仍然是最佳做法吗?

从历史上看,作为安全最佳实践的一部分,建议不要使用默认端口连接到 SQL Server。在具有单个默认实例的服务器上,默认情况下将使用以下端口:

  • SQL Server 服务 - 端口 1433 (TCP)
  • SQL Server Browser 服务 - 端口 1434 (UDP)
  • 专用管理连接 - 端口 1434 (TCP)

问题:

  • 这个建议还有用吗?
  • 是否应该更改上述所有端口?

security sql-server best-practices dynamic-ports

21
推荐指数
4
解决办法
1万
查看次数

轻松显示两个表或查询之间不同的行

想象一下,您有两个不同的表/查询,它们应该具有/返回相同的数据。您想验证这一点。像下面的示例一样显示每个表中任何不匹配的行的简单方法是什么,比较每一列?假设表中有 30 列,其中许多是 NULLable。

当没有 PK 或每个 PK 可能有重复项时,仅加入 PK 列是不够的,并且必须使用 30 个正确处理 NULL 的连接条件进行 FULL JOIN 以及讨厌的 WHERE 条件将是一场灾难排除匹配的行。

通常,当我针对未经整理或未完全理解的数据编写新查询时,问题最严重,并且 PK 在逻辑上可用的可能性极低。我想出了两种不同的方法来解决问题,然后比较它们的结果,差异突出了我不知道的数据中的特殊情况。

结果需要如下所示:

Which   Col1   Col2   Col3   ... Col30
------  ------ ------ ------     ------
TableA  Cat    27     86               -- mismatch
TableB  Cat    27     105              -- mismatch
TableB  Cat    27     87               -- mismatch 2
TableA  Cat    128    92               -- no corresponding row
TableB  Lizard 83     NULL             -- no corresponding row
Run Code Online (Sandbox Code Playgroud)

如果[Col1, Col2]确实是一个复合键并且我们在最终结果中按它们排序,那么我们可以很容易地看到 A 和 B 有一行不同的应该是相同的,并且每一行都有一行不在另一行中。

在上面的例子中,两次看到第一行是不可取的。

这是用于设置示例表和数据的 …

sql-server-2008 sql-server except

20
推荐指数
3
解决办法
11万
查看次数

对于圣经希伯来语,我应该使用哪种排序规则?

对于圣经希伯来语,我应该使用哪种 SQL Server 排序规则?所考虑的数据库需要适应变音符号(即元音、重音、比喻等)。

database-design sql-server collation configuration sql-server-2017

19
推荐指数
2
解决办法
1929
查看次数

EXCEPT 运算符与 NOT IN

EXCEPT运营商已在SQL Server 2005中引入的,但之间有什么区别NOT INEXCEPT

它也这样做吗?我想用一个例子做一个简单的解释。

sql-server-2005 sql-server sql-server-2008-r2 operator except

18
推荐指数
1
解决办法
4万
查看次数

SQL中具有总参与约束的多对多关系的实现

我应该如何在 SQL 中实现以下实体关系图中描述的场景?

具有总参与约束的多对多关系

如图所示,每个A实体类型出现都必须与至少一个 B对应项(由双连接线表示)相关,反之亦然。我知道我应该创建以下三个表:

    CREATE TABLE A
    (
        a INT NOT NULL,
        CONSTRAINT A_PK PRIMARY KEY (a)
    );

    CREATE TABLE B
    (
        b INT NOT NULL,
        CONSTRAINT B_PK PRIMARY KEY (b)
    );

    CREATE TABLE R
    (
        a INT NOT NULL,
        b INT NOT NULL,
        CONSTRAINT R_PK      PRIMARY KEY (a, b),
        CONSTRAINT R_to_A_FK FOREIGN KEY (a)
            REFERENCES A (a),
        CONSTRAINT R_to_B_FK FOREIGN KEY (b)
            REFERENCES B (b)
    );
Run Code Online (Sandbox Code Playgroud)

但是,如何实现总参与约束(即,强制执行其中之一的每个 …

erd database-design

17
推荐指数
2
解决办法
1万
查看次数

单独的月份和年份列,或日期与日期始终设置为 1?

我正在用 Postgres 构建一个数据库,其中将有很多由month和分组的东西year,但永远不会由date.

  • 我可以创建整数monthyear列并使用它们。
  • 或者我可以有一month_year列并始终将其设置day为 1。

如果有人正在查看数据,前者似乎更简单更清晰,但后者很好,因为它使用了正确的类型。

postgresql database-design datetime

17
推荐指数
3
解决办法
7932
查看次数

SQL Server 链接服务器性能:为什么远程查询如此昂贵?

我有两个数据库服务器,通过链接服务器连接。两者都是 SQL Server 2008R2 数据库,链接服务器连接是通过常规“SQL Server”链接使用当前登录的安全上下文建立的。链接的服务器都在同一个数据中心,所以连接应该不是问题。

我使用以下查询来检查列的哪些值identifier可远程使用,但不能在本地使用。

SELECT 
    identifier 
FROM LinkedServer.RemoteDb.schema.[TableName]

EXCEPT

SELECT DISTINCT
    identifier 
FROM LocalDb.schema.[TableName] 
Run Code Online (Sandbox Code Playgroud)

在两个表上的列上都有非聚集索引identifier。本地大约有 260 万行,远程只有 54 行。然而,在查看查询计划时,70% 的执行时间用于“执行远程查询”。此外,在研究完整的查询计划时,估计的本地行数是1而不是2695380(这是仅选择后面的查询时的估计行数EXCEPT)。 执行计划 执行此查询时,确实需要很长时间。

不禁让人疑惑:这是为什么呢?估计是“刚刚”结束,还是链接服务器上的远程查询真的那么昂贵?

sql-server sql-server-2008-r2 linked-server except

16
推荐指数
2
解决办法
4万
查看次数