我可以使用以下方法执行查询:
SELECT deqs.last_execution_time AS [Time]
,dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)
但我也在寻找username执行这些查询的列。
我有第二范式 (2NF) 的问题,我无法使用 Google 解决它。这让我发疯,因为我是一名老师,我不想教我的学生错误的东西。
让我们有一个包含 5 个字段的表。
评分 = {学生姓名、学科代码、学科名称、#考试、成绩}
依赖是这样的:
学生姓名、学科代码、#考试 -> 成绩
主题代码 -> 主题名称
主题名称 -> 主题代码
因此,候选键 1 是{StudentName, SubjectCode, #Exam},候选键 2 是{StudentName, SubjectName, #Exam}。
主要属性是{StudentName, SubjectCode, SubjectName, #Exam},非主要属性是Grade
根据第二范式的定义,非主属性不能依赖于候选键的一部分。唯一的非主要属性 (Grade) 不依赖于候选键的一部分,因此该表似乎在 2NF 中。
问题是我认为有些不对劲(我可能是错的)。我认为科目应该有自己的桌子。
评分 = {学生姓名,学科代码,#考试,成绩}
主题 = {主题代码,主题名称}
但是 2NF 不会产生这个。3NF 是关于非主要属性之间的依赖关系,因此它也不会产生这种依赖关系。但在我看来,这是正确的结果,因为它没有冗余。
我猜如果非主要属性被定义为“不是候选键的属性”,2NF 会产生想要的结果。但是我一次又一次地检查了这一点,非主要属性被定义为“不属于候选键的属性”。
我究竟做错了什么?
说来话长,但我们的长期顾问(前雇员)在几年前(2006 年左右)编写了一个自定义脚本来与 Tivoli Storage Manager 交互,它似乎正在检查名为truncate log on checkpoint. 他们声称它阻止脚本在 SQL 2012 实例上运行和执行备份。
我觉得这完全是废话,因为我找不到任何这样的选项,sp_configure而且备份在任何地方都可以工作,只有一个实例。但是,我想移除地雷,如果是这样的话,并移除其他过时的元素。我确实让他们与供应商核实,但我对他们所说的任何事情都没有高度的信心。
我所做的研究几乎没有得到更多的回报,它可能是 SQL 2000 或 Sybase 选项的一个选项。另一种说法是,当恢复模型是SIMPLE并且没有显式选项打开或关闭它时,它在更高版本(2008 及更高版本)上被隐式调用/使用。
由于TRUNCATE LOG如今事务日志的工作方式,该命令已过时,因此我认为此时甚至无法查询该选项。
由于我没有任何 SQL Server 2000 实例,我希望有人能回忆起这个,或者可以在他们周围的一个实例上检查它。我已经告诉他们,我没有什么可以推荐的。我也希望有人可以确认这已经过时了。
我正在编写一个查询,用于对社交提要的结果进行分页。这个概念是移动应用程序将请求 N 个项目,并提供我在@CutoffTime下面调用的开始日期时间。截止时间的目的是确定分页窗口应该何时开始。我们使用时间戳而不是行偏移量的原因是,即使添加了较新的社交内容,时间戳也会让我们在获取较旧帖子时从一致的位置翻页。
由于社交提要项目可以来自您自己或您的朋友,因此我使用 aUNION来组合这两个组的结果。最初我尝试了TheQuery_CTE没有的逻辑UNION,结果很慢。
这就是我所做的(包括相关的表架构):
CREATE TABLE [Content].[Photo]
(
[PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1),
[Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
[FullResolutionUrl] NVARCHAR(255) NOT NULL,
[Description] NVARCHAR(255) NULL,
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
);
CREATE TABLE [Content].[UserPhotoAssociation]
(
[PhotoId] INT NOT NULL,
[UserId] INT NOT NULL,
[ShowInSocialFeed] BIT NOT NULL DEFAULT 0,
CONSTRAINT [PK_UserPhotos] PRIMARY KEY ([PhotoId], [UserId]),
CONSTRAINT [FK_UserPhotos_User] FOREIGN KEY ([UserId])
REFERENCES [User].[User]([UserId]),
CONSTRAINT [FK_UserPhotos_Photo] …Run Code Online (Sandbox Code Playgroud) 几年来,我的开发箱上安装了 SQL Server 2014 Standard 作为默认实例的副本。我在我的机器上安装了标准,因为我有一个免费的许可证,可以通过我的 MSDN 订阅使用。现在我想卸载 SQL Server 2014 并将 SQL Server 2017 Developer Edition 设为我的默认实例。我尝试通过标准的“添加/删除程序”工作流卸载 SQL Server 2014,但在询问我要卸载哪些功能后,它提示我输入包含卸载媒体的目录。不幸的是,我没有保存从 MSDN 获得的 SQL Server 2014 下载包,并且我无法再访问 MSDN。我还检查了我的 Visual Studio,但它只能返回到 SQL Server 2016。如何在没有安装媒体的情况下卸载 SQL Server 2014 Standard?
进一步的背景:
我想卸载 SQL Server 2014 的全部原因是我想使用STRING_AGGAzure SQL 数据库和 SQL Server 2017 的新功能。例如,为了更轻松地设置开发环境,我们对本地环境开发连接字符串使用点表示法我们的连接字符串是:
Data Source=.;Initial Catalog=<Database Name>;Trusted_Connection=True;Connection Timeout=30;
Run Code Online (Sandbox Code Playgroud)
点表示法连接到默认数据库,据我所知,如果不先卸载 SQL Server 2014,我无法将 SQL Server 2017 设为默认数据库。如果我可以在不卸载 SQL Server 2014 的情况下使用点符号连接字符串连接到 SQL Server 2017,那么我也愿意接受该解决方案。
我阅读了 Cassandra 的文档,了解它在查询数据时执行的内部步骤。看起来 Cassandra 依赖 Partitioner 和 Replication Strategy 来处理查询。我仍然对 Partitioner 需要知道 Partition Key 感到困惑。如果查询具有分区键,则内部查询过程看起来很简单。但是,如果查询需要结果集而不是像下面这样的确定性行。
SELECT * FROM <table>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当WHERE子句中没有指定 Primary Key 时,Coordinator 如何知道将请求发送到哪些节点?
如果返回多行,可能分布在不同的节点,这些行如何聚合返回给客户端?
我们的数据库中有 12 种类型的费用,其中一些有相当不同的数据减去金额字段。我们在应用程序和报告中有多个地方需要单个和多个费用总计以及每个费用类型和总计的计数。最后,我们希望所有这些调用都有一个视图,但可以使用存储过程。
我们为此查看了多种替代方案,发现 CTE 允许我们在不使用临时表的情况下获取所需的所有数据。使用连接不起作用,因为无论我们尝试什么,我们都看到记录被复制或删除。
我附上了费用表的一个子集和包含 CTE 的查询。有没有人有比这更好的选择?更快的东西?我们是否适当地接近这种“扁平化”?
请注意,无论是 View 还是 Proc,此查询的执行计划都是相同的,并且 Proc 的运行时间似乎是原来的两倍。
下面是代码
WITH pe AS
(
SELECT
EventRegistrationId
,sum(AmountPaid) as AmountPaidTotal
,sum(CommercialValueAmount) as CommercialValueAmountTotal
,count(1) as ExpenseCount
FROM PettyExpenses
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
),hpe AS
(
SELECT
EventRegistrationId
,sum(AmountPaid) as AmountPaidTotal
,sum(CommercialValueAmount) as CommercialValueAmountTotal
,count(1) as ExpenseCount
FROM HirePremisesExpenses
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), ae AS
(
SELECT
EventRegistrationId
,sum(AmountPaid) as AmountPaidTotal …Run Code Online (Sandbox Code Playgroud) 很像swasheck 的一个相关问题,我有一个历史上曾遭受性能问题的查询。我正在查看 SSMS 上的查询计划并注意到Nested Loops (Inner Join)警告:
无连接谓词
根据一些仓促的研究(鼓舞人心的DBA和Brent Ozar 的信心),看起来这个警告告诉我我的查询中有一个隐藏的笛卡尔积。我已经检查了几次我的查询,但没有看到交叉连接。这是查询:
DECLARE @UserId INT; -- Stored procedure input
DECLARE @Now DATETIME2(7) = SYSUTCDATETIME();
;WITH AggregateStepData_CTE AS -- Considering converting this CTE into an indexed view
(
SELECT
[UA].[UserId] -- FK to the UserId
, [UA].[DeviceId] -- FK to the push device's DeviceId (int)
, SUM(ISNULL([UA].[LatestSteps], 0)) AS [Steps]
FROM [User].[UserStatus] [UA]
INNER JOIN [User].[CurrentConnections] [M] ON
[M].[Monitored] = [UA].[UserId] AND …Run Code Online (Sandbox Code Playgroud) performance join sql-server azure-sql-database query-performance
请帮忙!我从我设置的分区切换出时出错。我有下面的脚本和错误信息:
我为每个范围创建了单独的文件组
--创建分区函数
USE [ApplicationLogs]
GO
CREATE PARTITION FUNCTION [FN_SchedulerLog](datetime) AS RANGE LEFT FOR VALUES (N'2016-06-30T23:59:59.998', N'2016-07-31T23:59:59.998', N'2016-08-31T23:59:59.998', N'2016-09-30T23:59:59.998', N'2016-10-31T23:59:59.998', N'2016-11-30T23:59:59.998', N'2016-12-31T23:59:59.998')
--Create Parttion SCHEME
CREATE PARTITION SCHEME [sch_SchedulerLog] AS PARTITION [FN_SchedulerLog] TO ([FG_SchedulerLog_06_16], [FG_SchedulerLog_07_16], [FG_SchedulerLog_08_16], [FG_SchedulerLog_09_16], [FG_SchedulerLog_10_16], [FG_SchedulerLog_11_16], [FG_SchedulerLog_12_16], [PRIMARY])
DROP INDEX [pkSchedulerLogId] ON [dbo].[SchedulerLog] WITH ( ONLINE = OFF )
CREATE UNIQUE NONCLUSTERED INDEX [pkSchedulerLogId] ON [dbo].[SchedulerLog]
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = …Run Code Online (Sandbox Code Playgroud) 有人问我“我们什么时候需要使用覆盖索引,为什么?” 由 DBA。
我的解释是:
它允许引擎直接从索引本身的值中提取所有相关数据。
对于问我这个问题的 DBA,我的解释并不令人满意。还有哪些相关的细节?
我知道聚集索引和非聚集索引之间的区别
sql-server ×8
audit ×1
cassandra ×1
checkpoint ×1
index ×1
index-tuning ×1
join ×1
log ×1
paging ×1
partitioning ×1
performance ×1
transaction ×1