当我运行查询时,我得到以下客户端统计结果:-
Number of SELECT statements = 2
Run Code Online (Sandbox Code Playgroud)
正在运行的查询只有 1 个 SELECT 语句:-
SELECT TOP 1000000 * FROM [DATABASE].[SCHEMA].[TABLE]
Run Code Online (Sandbox Code Playgroud)
我的客户端统计信息在服务器上返回,声称 2 个 SELECT 语句如下所示:-


有人可以解释为什么它会显示为 2 个 SELECT 语句吗?
我还使用 SQL Profiler 来跟踪它的运行情况,并且没有第二个查询
我已在主服务器 A 和辅助服务器 B 中配置了日志传送。
一切正常,直到我使备用数据库联机。
用户无法登录辅助 serverB 数据库(位于已联机的辅助服务器上)
谁可以帮我这个事?
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012
我对 JOIN 操作的语法有点好奇,特别是我们设置条件的 ON 子句。假设我们正在对现有表和我们刚刚创建为 JOIN 中的子查询的表执行连接,例如:
SELECT DISTINCT ssn, job, identifier, startdate, enddate, salary, ceasing
FROM oldcontracts
JOIN (SELECT DISTINCT name, identifier FROM jobs)
ON oldcontracts.job = jobs.name
;
Run Code Online (Sandbox Code Playgroud)
这里的问题是,我们将如何设置一个有效的 ON 条件?我这样说是因为语法具有以下形式:
table1.column <condition> table2.column
Run Code Online (Sandbox Code Playgroud)
显然,SQL 2005 对我们从何处获取这些列非常严格。这意味着我在 jobs.name 上收到一个错误,说它不是一个有效的标识符。我假设 SQL 抛出这个错误是因为作业不是在操作中加入的表。
我知道解决这个问题的方法是简单地将作业设置为 table2 以在 JOIN 中使用,并根据需要调整 SELECT,然后一切都会工作,但我很想知道是否有办法解决一列一个子查询,假设该特定子查询是在 JOIN 操作中用作 table2 的那个?
一段时间以来,我们在运行 SQL Server 的虚拟环境中遇到了一些奇怪的问题。
我们从用户那里随机收到关于 SQL 盒性能非常差的电话。果然,当我查看时,我看到 CPU 固定在 100%。我对另一台主机执行 VMotion,一旦它完成移动到另一台主机,性能立即恢复正常。
我一直在与 VMWare 管理员合作,他们向我保证 VMotion 不会影响 SQL Server 上的任何内容。就好像移动到另一台主机会导致执行计划更改等。然而,我不明白为什么 CPU 使用率突然飙升,除非由于参数嗅探而导致重新编译的查询计划很糟糕,但我认为 VMotion 不会解决这个问题,因为它应该是透明的。
VM 场由 19 台戴尔服务器(抱歉,我不知道确切型号)组成,每个服务器有 2 个物理插槽和 12 个内核。
以前有没有其他人观察过这种行为?我想知道这是否与容量有关,因为似乎有一些大型 VM 供主机处理(有 14 个 80GB、12 个核心 VM 浮动)。即使在场中使用这些虚拟机,我也可以在 Vsphere 控制台中看到主机没有被过度使用(内存确实在很多时候爬升到 80% 标记,但没有膨胀)。
此外,这会发生在所有不同版本的 SQL(2008、2008R2、2012 和 2014)上。
非常感谢您的任何见解!
在SQL Server 2012中,我想指数有一个表列存储索引。但是出现错误消息:
消息 35338,级别 16,状态 1,第 1 行
不支持聚集列存储索引。
我的代码是:
CREATE TABLE [dbo].[Card](
[CardId] [int] IDENTITY(1,1) NOT NULL,
[CardSerialNumber] [varchar](19) NULL,
[CreateDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple ON [dbo].[Card]
Run Code Online (Sandbox Code Playgroud) 我正在尝试迁移数据库,并且与数据库一起,我还尝试迁移用户而无需重新映射用户。我试图用旧的服务器 SID 重新创建 Windows 用户。这可能吗?我有一个我一直在尝试使用的代码示例,但 SQL 给了我一个不正确的语法错误。
询问:
USE [master]
GO
CREATE LOGIN [domain\ntuser] FROM WINDOWS
WITH
DEFAULT_DATABASE=[master],
SID=0x01000000000000000000000000000000000000000000000000000000;
GO
Run Code Online (Sandbox Code Playgroud)
错误:
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near '0x01000000000000000000000000000000000000000000000000000000'.
Run Code Online (Sandbox Code Playgroud) & 在下面的查询中表示什么?它的意义是什么?
select id, name
from test
where num & 1 = 1;
Run Code Online (Sandbox Code Playgroud) 我有一个 25TB db(SQL2008 Enterprise SP4),它似乎没有在生产中运行 CHECKDB。不知道它是否在某个时候针对恢复的备份运行。现在我没有空间在连接到同一存储的另一台服务器上恢复副本。
我需要能够运行 checkcatalog、checkalloc 和 checktable,但即使对于小表,它似乎也无法创建内部稀疏文件 dbcc 快照。
所以我想知道我是否可以在另一个驱动器上创建一个 SQL 数据库快照,然后针对它运行这些命令,然后在完成后删除快照数据库。
谢谢!
——托德
sql-server-2008 sql-server dbcc-checkdb vldb dbcc-checktable
我有一个 500 行的结果集,但这是 100 张发票。我只需要最后一张发票的前 10 个。
我发现了类似的东西:如何从每个类别中选择前 10 条记录
样本数据:
InvNr | DetailLine
111 | 1
111 | 2
112 | 1
112 | 2
112 | 3
113 | 1
113 | 2
114 | 1
115 | 1
... | ...
Run Code Online (Sandbox Code Playgroud)
我希望得到的是例如:
SELECT DISTINCT TOP 2 InvNr, DetailLine FROM tbl_Invoice
Run Code Online (Sandbox Code Playgroud)
有了这个结果:
InvNr | DetailLine
111 | 1
111 | 2
112 | 1
112 | 2
112 | 3
Run Code Online (Sandbox Code Playgroud)
更新:
所以我需要他们创建的最后 10 个(或上例中的前 2 个)发票,但每个发票可以有“x”个明细行,我希望结果中的所有明细行(最后 10 …
我正在尝试在本地 SQL Server 和 Azure SQL 数据库之间设置事务复制。不幸的是,Azure SQL 似乎不支持 SQL Server 复制,而 Azure 数据同步似乎已被放弃(即使不支持,它也会在具有 200 多个表的数据库上窒息)。
在本地 SQL Server 和 Azure SQL 数据库之间设置连续事务复制有哪些替代方法?我的目标是只复制少数几个表,我希望它近乎实时地发生(而不是按计划进行)。
sql-server ×10
t-sql ×3
columnstore ×1
dbcc-checkdb ×1
group-by ×1
join ×1
migration ×1
replication ×1
top ×1
users ×1
vldb ×1
vmware ×1