我正在尝试连接到不同域中 VPN 上的远程 SQL Server。当我在 SQL Server 上输入服务器名称并选择其他连接参数以添加我学校需要的一些额外内容时:
Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
登录失败。登录名来自不受信任的域,不能与 Windows 身份验证一起使用。
有没有办法找出知道为表创建哪些索引的最佳方法?
为什么以下查询返回无限行?我本来希望该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)
从历史上看,作为安全最佳实践的一部分,建议不要使用默认端口连接到 SQL Server。在具有单个默认实例的服务器上,默认情况下将使用以下端口:
问题:
想象一下,您有两个不同的表/查询,它们应该具有/返回相同的数据。您想验证这一点。像下面的示例一样显示每个表中任何不匹配的行的简单方法是什么,比较每一列?假设表中有 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 排序规则?所考虑的数据库需要适应变音符号(即元音、重音、比喻等)。
database-design sql-server collation configuration sql-server-2017
该EXCEPT
运营商已在SQL Server 2005中引入的,但之间有什么区别NOT IN
和EXCEPT
?
它也这样做吗?我想用一个例子做一个简单的解释。
sql-server-2005 sql-server sql-server-2008-r2 operator except
我应该如何在 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)
但是,如何实现总参与约束(即,强制执行其中之一的每个 …
我正在用 Postgres 构建一个数据库,其中将有很多由month
和分组的东西year
,但永远不会由date
.
month
和year
列并使用它们。month_year
列并始终将其设置day
为 1。如果有人正在查看数据,前者似乎更简单更清晰,但后者很好,因为它使用了正确的类型。
我有两个数据库服务器,通过链接服务器连接。两者都是 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 ×7
except ×4
postgresql ×2
collation ×1
datetime ×1
erd ×1
index-tuning ×1
logins ×1
operator ×1
recursive ×1
security ×1