我们有一张包含几百万行的生产表。我们运行了这个查询,它冻结了我们的数据库,
USE ExampleDatabase
GO
CREATE NONCLUSTERED INDEX IX_Table1_URL
ON [dbo].[Table1] ([URL])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table1_LastModified
ON [dbo].[Table1] ([LastModified])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table2_URL
ON [dbo].[Table2] ([URL])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table2_LastModified2
ON [dbo].[Table2] ([LastModified2])
GO
Run Code Online (Sandbox Code Playgroud)
我是一名对索引知识非常有限的开发人员,我不知道从哪里开始,只是添加 Table1 和 Table2 都有数百万行。
考虑具有以下结构的数据库:
表
[dbo].[客户]、[dbo].[地址]和[dbo].[报告]
模式
[dbo] 和 [报告]
我希望能够做的是让主体(可以是用户或角色)能够仅在报告模式中管理视图(创建、更改、删除)。此外,此主体将需要对 dbo 架构中的所有表的 SELECT 权限(以支持在报告架构中创建视图)。我希望能够做的最后一件事是仅在 dbo 架构中为报告表授予 INSERT、UPDATE 和 DELETE 权限。
这是可能的吗?我还没有找到正确的权限组合。我可以使用用户、角色等的任意组合来实现这一点。
索引优化后数据库大小从114增加到140Gb,这正常吗?
进程完成后服务器RAM使用率不减少,保持在62Gb/98%
如果ID = 01234并且此 ID 在一个月内进行了 3 次交易,如下所示:
***DAY_no Balance***
1/1/2018 5000
10/1/2018 10000
15/1/2018 12000
Run Code Online (Sandbox Code Playgroud)
我想要这样的数据:
***DAY_no Balance***
1/1/2018 5000
2/1/2018 5000
3/1/2018 5000
4/1/2018 5000
5/1/2018 5000
6/1/2018 5000
7/1/2018 5000
8/1/2018 5000
9/1/2018 5000
10/1/2018 10000
11/1/2018 10000
12/1/2018 10000
13/1/2018 10000
14/1/2018 10000
15/1/2018 12000
16/1/2018 12000
17/1/2018 12000
18/1/2018 12000
19/1/2018 12000
20/1/2018 12000
21/1/2018 12000
22/1/2018 12000
23/1/2018 12000
24/1/2018 12000
25/1/2018 12000
26/1/2018 12000
27/1/2018 12000
28/1/2018 12000
29/1/2018 12000
30/1/2018 12000 …Run Code Online (Sandbox Code Playgroud) performance sql-server subquery sql-server-2012 query-performance
将数据库放在一个服务器实例上的一个常见问题是它们都共享相同的 tempdb。是否可以为单独的数据库分配 tempdb 文件/和文件组。资源调控器允许这样做吗?
数据库 1,只能访问 tempdb 中的一个文件/文件组 1。
数据库 2,只能访问 tempdb 中的一个文件/文件组 2。
我没有构建它,但我们有一个 32 位的 Windows Server 2008,带有 SQL Server 2008 和 4GB 的 RAM。
我需要将它升级到 SQL Server 2016,以便将日志传送到新服务器,这样我们就可以摆脱困境。
问题 - 看起来 SQL Server 2016 至少需要 Windows Server 2012,它只有 64 位。
问题:如何将数据迁移到 SQL 2016 服务器,停机时间小于 1 天?
有没有办法通过兼容性级别来解决它?
我刚刚开始使用OPENJSONSQL Server 2016 SP1。
我有这句话:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c
where c.CodeId = a.AggregationId for json path
Run Code Online (Sandbox Code Playgroud)
要生成此 JSON:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c …Run Code Online (Sandbox Code Playgroud) 我有一个包含 object_id、object_name、derived_from_object_id 的表
我需要查看哪些函数才能根据提供的 object_id 提供派生总数?
例子
1 object1 0
2 object2 1
3 object3 1
4 object4 0
5 object5 3
6 object6 2
7 object7 3
8 object8 5
Run Code Online (Sandbox Code Playgroud)
没有定义从对象或子对象派生的最大数量。因此,如果我想要 objectid 1 的总数,结果将为 7。
我想过编写一个存储过程,它只是为每个对象 id 返回一个计数,然后它会为每个有子对象的 id 调用自己。虽然我认为这会奏效,但我认为这完全是错误的方向。
我不确定这是否可行,但是在编写查询以从表中进行选择时,当我使用 CTRL + 空格键调出智能感知下拉菜单时,它会为我提供所有变量的列表(全局变量和表中的变量)。
有什么办法可以让它只显示我从中选择的表中的变量?除非您已经知道该字段的名称,否则它基本上完全没用,那么智能感知下拉的重点是什么?
我的任务是调查应用程序的工作由于死锁而失败的问题。我知道使用跟踪来捕获死锁,但是由于这是 16 小时前发生的事情,我想知道是否可以查看导致死锁的原因?
谢谢
sql-server ×10
performance ×2
deadlock ×1
filegroups ×1
intellisense ×1
json ×1
ssms ×1
subquery ×1
tempdb ×1