我有以下查询:
SELECT DISTINCT DATEADD(ms,DATEDIFF(ms,0,[Time]),DATEADD(dd,0,DATEDIFF(dd,0,[DATE]))),
[DATE],
DATEPART(YY,[DATE]),
DATEPART(MM,[DATE]),
DATENAME(MONTH,[DATE]),
DATEPART(DD,[DATE]),
[Time],
DATEPART(HH,[Time]),
DATEPART(MI,[Time]),
DATEPART(SS,[Time])
FROM [SourceTable]
WHERE ([DATE] BETWEEN '2012-01-08' AND '2012-01-08') AND
DATEADD(ms,DATEDIFF(ms,0,[Time]),DATEADD(dd,0,DATEDIFF(dd,0,[DATE]))) NOT IN
(SELECT [DateTime]
FROM [DIM].[DateTime]
WHERE [Date] BETWEEN '2012-01-08' AND '2012-01-08')
ORDER BY [DATE], [Time]
OPTION (MAXDOP 6)
Run Code Online (Sandbox Code Playgroud)
当我使用这个特定日期时,我不得不在 14 小时运行时间后取消查询,任何其他日期相同的查询通常需要 21 秒。我确实检查了查询执行计划,与我使用它的日期无关,查询影响的行数每天几乎相同(大约 500'000 行)。我检查了索引,统计数据是最新的。如何解释这种行为以及如何解决这个问题?
机器硬件足够(8核,192 GB RAM)
什么是 sql server 安全的最佳实践?使用被授予架构对象权限的 AD 组,还是应该将 AD 组添加到被授予架构对象权限的数据库角色?如果后者是最佳实践,那么使用数据库角色的真正好处是什么?
我有一个包含四年数据的表,每个月我都有一个基于包含两个文件的文件组的分区。没想到又收到了八年的数据,准备了这些年的数据库文件和文件组。
当前的方案涵盖 200901 - 201512,我现在需要添加 200001 - 200812。使分区表联机的最佳方法是什么?
我问是因为当前表有 180 亿行,我想以有效的方式做到这一点:)
在集成服务目录中,我可以看到可用的包/项目版本,并在必要时恢复到旧版本。在此对话框中,我看到一个字段“描述”,但是我发现还没有办法将描述放入该字段中。如何编辑/填充?
我有一个表值函数
CREATE FUNCTION [dbo].[DateRange]
(
@StartDate date,
@EndDate date,
@Location varchar(25),
@Device varchar(25)
)
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM MyTable
WHERE Date < @EndDate AND
Date > @StartDate AND
Location = @Location AND
Device = @Device
);
Run Code Online (Sandbox Code Playgroud)
现在我想让用户选择使用 NULL 作为位置参数和/或设备参数,以便他/她获取与位置和设备无关的所有数据
什么是最优雅和最有效的方式来做到这一点?
我创建了一个表,其中有大约 100 个分区(每月),所有分区都配置为使用页面压缩。之后,我将逐月向该表中插入数据。
我现在希望 SQL Server 应用页面压缩。但是使用sp_estimate_data_compression_savings它看起来不像。(我会节省大约 40%-50%。)
我在配置页面压缩时错过了什么吗?
问题是我现在有大文件,每个分区 70-80 GB。当我压缩它们时,它们是半空的。重新获得这个磁盘空间是不可能的,因为如果我试图缩小分区后面的数据文件,我最终会得到一个碎片化的聚集索引。
我怎样才能避免这种磁盘空间浪费派对?
我有一个大约 4.5TB 的数据库,因为我们在一个表(按月分区)上并行插入(以减少每日加载时间),该表上的聚集索引往往会出现严重碎片。当我在这张表上从 sys.dm_db_index_physical_stats (Limited) 中进行选择时,它需要很长时间(> 4-5 小时)。有没有更快更好的方法来检查这个表的分区上的碎片级别,这花费的当前时间是完全不可接受的。
我有我想导入 SQL Server 2014 的 CSV 文件。文件中的每条记录大约有 20 列,每条记录都应验证数据类型合规性以及每列的其他一些检查(最小/最大范围,空/not null 等)。
我正在寻找有关以有效方式执行此操作的模型架构的建议。使用 SSIS 和一些错误表在我看来有点低效,因为它看起来好像我一次只能检查一列和错误处理(尤其是 SSIS 中的列锁定充其量是笨拙的)。
我希望处理每条记录并立即了解该记录中的所有错误,以便我可以立即向提供导入数据的人员提供所有问题的反馈。
我有几个视图用于将数据从 SQL-Server 导出到 .csv 文件中。它们都是通过 SSIS 包执行的。我们的 DBA 决定将“最大并行度”设置为 1,并告诉我在我认为有意义的地方使用 MAXDOP。
我现在已经多次看到 MAXDOP 确实有助于提取大数据量(尤其是当它导致对所有分区进行表扫描时)。
问题
sql-server ×7
ssis ×2
compression ×1
dmv ×1
partitioning ×1
permissions ×1
security ×1
ssis-2014 ×1
t-sql ×1