我从 SERVER_A 进行日志传送,每 10 分钟备份一次。我每 20 分钟将日志恢复到 SERVER_B。当我从 SERVER_B 到 SERVER_C 进行 DWH 加载时,我暂停恢复
我从 SERVER_B 进行报告,我想知道在 SERVER_A 上进行备份的时间,以便我可以向用户展示他们看到的数据有多新鲜
我无法使用 SERVER_A 的上次日志备份时间,因为我不确定该日志是否已恢复到 SERVER_B。
我无法使用 SERVER_B 的上次恢复时间,因为我不知道 SERVER_A 上实际进行备份的时间。
对于获得数据新鲜度的好方法有什么想法吗?
我正在运行一个查询并且执行它需要很长时间,查看执行计划我可以看到 51% 的成本在 SORT 中?在实际查询中,我没有按任何东西排序。
任何人都知道如何降低此排序百分比或将其全部删除?这是我正在运行的查询。
SELECT Time_ID,
Site_Type_ID,
Abandoned_ID,
WorkType_ID,
SUM (staging.dbo.measure.ring_time) AS Ring_Time,
SUM (staging.dbo.measure.hold_time) AS Hold_Time,
SUM (staging.dbo.measure.talk_time) AS Talk_Time,
SUM (staging.dbo.measure.acw_time) AS ACW_Time,
COUNT(*) CallCount
FROM measure
INNER JOIN DataMartEnd.dbo.Time_Dim
ON measure.StartTimeDate BETWEEN Time_Dim.Time_Start AND Time_Dim.Time_End
INNER JOIN datamartend.dbo.Site_Type_Dim
ON measure.DBID = Site_Type_Dim.Site_Type_Code
INNER JOIN datamartend.dbo.Abandoned_Call_Dim
ON measure.Abandoned = Abandoned_Call_Dim.abandoned_value
INNER JOIN DataMartEnd.dbo.Work_Type_Dim
ON measure.DBID = work_type_dim.MIG_Site_ID
AND Work_Type_Dim.Work_Type_Code = measure.Queue
AND measure.StartTimeDate BETWEEN Work_Type_Dim.DimEffectiveStartDtm AND Work_Type_Dim.DimEffectiveEndDtm
GROUP BY Abandoned_ID,
WorkType_ID,
Site_Type_ID,
time_id
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助。
我有一个表,它有一个聚集唯一索引和一个与索引结构相同的非聚集主键。
IF OBJECT_ID('[dbo].[tblBAccountHolder]') IS NOT NULL
DROP TABLE [dbo].[tblBAccountHolder]
GO
CREATE TABLE [dbo].[tblBAccountHolder] (
[lngParticipantID] INT NOT NULL,
[sdtmCreated] SMALLDATETIME NOT NULL,
[strUsername] VARCHAR(20) NULL,
[strPassword] VARCHAR(20) NULL,
[tsRowVersion] TIMESTAMP NOT NULL,
CONSTRAINT [PK_tblAccountHolder]
PRIMARY KEY NONCLUSTERED ([lngParticipantID] asc),
CONSTRAINT [IX_tblBAccountHolder__lngParticipantID]
UNIQUE CLUSTERED ([lngParticipantID] asc)
WITH FILLFACTOR = 100)
Run Code Online (Sandbox Code Playgroud)
正如您在定义中看到的那样,只有一列:
CREATE UNIQUE CLUSTERED INDEX IX_tblBAccountHolder__lngParticipantID
ON [dbo].[tblBAccountHolder] ( [lngParticipantID] ASC )
Run Code Online (Sandbox Code Playgroud)
我想删除唯一索引,并更改主键以使其成为集群。我将保留相同的主键,只需将其从非集群更改为集群。
该表是事务复制的一部分,我只会在订阅者数据库上完成此操作。不在发布者中。
这是一个包含超过 9,293,193 行的表格。
我会搞砸复制吗?
问题是我必须删除主键约束并将其重新创建为集群。
这是我想在订阅者数据库中完成的操作:
drop INDEX IX_tblBAccountHolder__lngParticipantID
ON [dbo].[tblBAccountHolder]
GO
ALTER TABLE [dbo].[tblBAccountHolder]
drop CONSTRAINT …Run Code Online (Sandbox Code Playgroud) replication sql-server transactional-replication sql-server-2014 automation
我每周使用Ola Hallengren 的解决方案更新统计数据。
根据下面的文章,我正在考虑启用 Auto Stats Async 并打开跟踪标志 2371。
现在,我的数据库的 async 选项为 false:
此外,来自SQL Server 2008 及更高版本的重要修补程序:
此设置允许异步自动更新统计信息,同时您当前运行的查询继续使用旧统计信息,直到更新的统计信息可供使用,从而降低不可预测的查询性能。对此的替代方案(这是默认设置)是暂停查询执行(仅适用于使用该对象统计信息的查询),同时为该对象自动同步更新统计信息。根据对象的大小以及硬件和 I/O 子系统,这可能需要几秒钟到几分钟的时间。
题:
在测试环境中,在将 Auto Update Stats Async 设置为 ON 之前/之后,可以进行哪些好的简单测试?
在什么情况下我更有可能从异步自动更新统计信息中受益?
数据库 500GB+,大表。
我运行了一个数据库引擎优化顾问会话DTA 来优化我的数据库。
DTA 提出了一些统计建议,但是,我注意到有些包含在其他中,例如在我下面的表 ProductIcon 中:
CREATE STATISTICS [_dta_stat_172123954_1_2_3_4_5_12]
ON [dbo].[ProductIcon]
([ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
go
CREATE STATISTICS [_dta_stat_172123954_11_1_2_3_4_5_12]
ON [dbo].[ProductIcon]
([IconTypeID], [ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
go
Run Code Online (Sandbox Code Playgroud)
这是表定义:
IF OBJECT_ID('[dbo].[ProductIcon]') IS NOT NULL
DROP TABLE [dbo].[ProductIcon]
GO
CREATE TABLE [dbo].[ProductIcon] (
[ClassID] INT NOT NULL,
[SegmentID] INT NOT NULL,
[GroupID] INT NOT NULL,
[Tier1] VARCHAR(10) NOT NULL,
[LanguageID] SMALLINT NOT NULL CONSTRAINT [DF_ProductIcon_LanguageID] DEFAULT ((1)),
[Image] VARCHAR(50) NOT NULL CONSTRAINT [DF_ProductIcon_Image] DEFAULT (''),
[Descr] …Run Code Online (Sandbox Code Playgroud) 下面的代码是一个动态 sql,它将为您提供系统中所有警报的列表。
有用。
出于这个问题之外的原因,代码中有一个临时表。
这个问题与我在创建临时表之前确保临时表不存在的方式有关。
我在 try catch 块中放置了一个删除表,如下面的代码所示。
我的问题是:
我仍然有一些服务器 sql-server-2008-r2 但大多数我的服务器是 sql server 2016。
EXEC Sp_executesql
N'
begin try
drop table #tmp_sp_help_alert
end try
begin catch
end catch
create table #tmp_sp_help_alert (
id int null, name nvarchar(128) null,
event_source nvarchar(100) null,
event_category_id int null,
event_id int null,
message_id int null,
severity int null,
enabled tinyint null,
delay_between_responses int null,
last_occurrence_date int null,
last_occurrence_time int null,
last_response_date int null,
last_response_time int null,
notification_message nvarchar(512) null,
include_event_description …Run Code Online (Sandbox Code Playgroud) sql-server dynamic-sql sql-server-2008-r2 error-handling temporary-tables
在索引 VARCHAR 列是个好主意/方法吗?这个概念是使用 VARCHAR 作为列。
我想知道,如果我们将SHA-1散列或SHA-256散列(如果我是偏执狂)存储为BINARY(20)列和该列上的索引。
SHA-1在应用程序端对短字符串执行计算足够快,我们只是通过 SHA 值进行查询。
可能我认为 的长度VARCHAR会在 10 到 30 个字符左右徘徊,有些会更长但概率较低。
当我右键单击 SSMS 并选择编写创建索引的脚本时:
我得到这个脚本,没有 data_compression:
USE [APCore]
GO
/****** Object: Index [i_agencyId] Script Date: 07/11/2019 12:18:13 ******/
CREATE UNIQUE NONCLUSTERED INDEX [i_agencyId] ON [agy].[agency]
(
[agencyId] ASC
)
INCLUDE ( [countryCode]) WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [NONCLUSTERED_INDEXES]
GO
Run Code Online (Sandbox Code Playgroud)
但是,当使用下面的查询专门检查数据压缩时
use APCore
go
SELECT i.name, p.data_compression_desc
FROM sys.partitions P
INNER JOIN sys.indexes I ON I.object_id = …Run Code Online (Sandbox Code Playgroud) 我这里说的是sql server。
但是在进行一些自动化操作时,我需要知道我是在天蓝色还是普通sql中。我怎样才能做到这一点?
sql-server azure-sql-database environment-variables sql-server-2016 azure
我有一个脚本来获取当前正在运行的作业:
-- get the running jobs
--marcelo miorelli
-- 10-dec-2013
SELECT sj.name
,DATEDIFF(SECOND,aj.start_execution_date,GetDate()) AS Seconds
FROM msdb..sysjobactivity aj
JOIN msdb..sysjobs sj on sj.job_id = aj.job_id
WHERE aj.stop_execution_date IS NULL -- job hasn't stopped running
AND aj.start_execution_date IS NOT NULL -- job is currently running
--AND sj.name = 'JobName'
and not exists( -- make sure this is the most recent run
select 1
from msdb..sysjobactivity new
where new.job_id = aj.job_id
and new.start_execution_date > aj.start_execution_date )
Run Code Online (Sandbox Code Playgroud)
当我在我的服务器上运行它时,它说当前没有正在运行的作业,但是,当我查看作业活动监视器时,我看到了下图。
此作业的第二步是使用代理运行 powershell 脚本。 你可以在这里看到第二步。 …
sql-server powershell sql-server-2012 jobs maintenance-plans
sql-server ×10
index ×2
optimization ×2
statistics ×2
automation ×1
azure ×1
backup ×1
compression ×1
dynamic-sql ×1
jobs ×1
log-shipping ×1
performance ×1
powershell ×1
replication ×1
sorting ×1
ssms ×1