在日志传送配置中 - 主数据库必须处于完整或大容量日志恢复模式。但是,对从库的恢复模式有什么要求吗?
示例:假设主数据库和辅助数据库都处于完整恢复模式,如果发生故障转移并且辅助数据库成为新的主数据库,我们可以更改数据库恢复模式。
另请参阅:https : //www.microsoftpressstore.com/articles/article.aspx?p=2832586&seqNum=3并搜索“日志传送数据库必须使用完整恢复模型”。- 这样对吗?
CPU使用率较低,大约15%。CPU是4770K。SQL Server 数据文件分为 8 个部分,并与 tempdb(也分为 8 个部分)一起存储在 EVO 970 SSD 上。temdlog 和数据库日志位于另一个 SSD 上(读/写潜力约为 500MB/s)。我在下面的任务管理器中没有看到任何高磁盘使用率(10 MB/s),并且 RAM 使用率也不高(有 32 GB)。最大并行度设置为 8。
看起来 SQL Server 主要使用 1 个核心,但我不明白为什么。似乎不受磁盘或内存的限制,那么我怎样才能让它工作得更努力一些(使用更多的CPU)?
更新
测试了 Dan Guzman 的查询并确认 cpu 利用率更高,尽管很难有时间在任务管理器中看到(查询时间 2 秒)。很高兴知道开发者版本并未锁定一个核心。
测试了丹·布朗链接中的查询。并行化版本使我的 cpu 使用率超过 95%,因此案件似乎已经结束;cpu使用率低是因为查询。
我有很多相关子查询(在选择中选择),这对于性能来说看起来不太好。对于维护来说,最简单的方法是在一个查询中计算多个统计信息,但这种方式似乎只使用一个核心。我测试了将它们拆分,以便每个查询只计算一个指标,这样 sql server 就开始使用更多核心。
将来我想我会测试 Spark 对于相同查询的性能,看看它与 sql server 相比如何。也许还可以通过 Spark 在多个工作线程上运行针对 sql server 的查询(在这种情况下,我需要根据 pk 的模数进行分区来分割工作)。
对于感兴趣的人来说:我需要计算的是比赛的各种指标,这样对于每场比赛和每个竞争对手,我都会获取其最高记录,例如过去 3 个月、过去 6 个月等或过去 6 个月的平均时间。当查询时间约为 10 小时时,它开始影响我想做的分析工作(更改或纠正某些内容的一次迭代需要太长时间)。
一个应用程序可以连接到两个不同的数据库,每个数据库都在不同的实例中。一个实例在本地部署,另一个实例是 Azure SQL(不是 Azure VM 中的 SQL)。那么基本上一个应用程序可以从两个实例访问数据吗?
在 SQL Server 2016 数据库服务器上,我几乎没有查询非常慢并且需要更多内存(查询未优化)。这使得整个数据库变慢,因为许多用户正在运行相同的查询。这导致其他查询等待。我CXCONSUMER等待(由于并行执行)和RESOURCE_SEMAPHORE.
所以这造成了内存压力(我相信这些缓慢的查询正在为其他查询造成内存争用,进而造成内存压力),我认为这导致我的计划缓存以固定的时间间隔清除。
我读到默认情况下Memory Grant %为 25%。我正在考虑增加这 25% 来为查询提供内存。我现在正在尝试暂时解决这个问题。
未优化的查询是 LINQ 查询,更改将需要团队一些时间。
所以请建议在资源调控器中增加Memory Grant %是否是一个好主意?
我总共有 128GB RAM,其中 75% (102 GB) 分配给 SQL Server。
如何使用 SQL Server 数据库邮件发送 Unicode 符号?我的目标是发送关于电子邮件主题的符号。比方说,我想发送关于该主题的“带有符号的主题”。我想使用的符号来自 Segoe UI Emoji 字体。
谢谢!
对于给定的分区方案名称,我需要检索一组
这必须在不存在参与该方案的任何表的情况下起作用。
即通过 sys.indexes 加入将不起作用。
我认为答案在于 sys.destination_data_spaces,但尚未弄清楚与 sys.partition_range_values 的连接。
我杀死了一个 80 MB 数据库的备份作业,它已经回滚了好几天......
我试图将数据库带入单用户模式,但那太挂在回滚状态。
我尝试杀死连接到数据库的所有会话,但仍然无法删除它。我用这个脚本来完成杀戮:
DECLARE @kill varchar(8000) = ''; SELECT @kill = @kill + 'kill ' +
CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id = db_id('fpddev92')
exec(@kill)
Run Code Online (Sandbox Code Playgroud)
任务的最新等待类型是CMEMTHREAD。我无法使用不同的名称恢复数据库,因为有一个应用程序在使用它,该应用程序在应用程序中具有硬编码的数据库名称。
如果需要,我可以删除和恢复数据库。我该如何解决这个问题???它被暂停。没有阻塞。
恐怕如果我重新启动服务,它只会在启动时进行回滚。
任何帮助是极大的赞赏!我一生中从未见过这样的事情......
我想DDMMYYY从以格式存储日期的字段中获取格式的日期YYYY-MM-DD Timestamp。(例如,“2018-11-09”应显示“09Nov2018”)。
我知道一种方法是使用可以提取的datepart函数(https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017)单独的年、月和日,然后我可以连接它们。
编辑:我不想使用getdate(). 有一列具有YYYY-MM-DD Timestamp格式,我正在从该列中提取'DDMM2018'. 我在用:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
Run Code Online (Sandbox Code Playgroud)
这给了我'9Nov2018'而不是'09Nov2018'。我打算再次将其转换回`datetype',因为这就是我想要的结果。
有没有其他方法可以实现这一目标?
任何想法/建议非常感谢。
我想将代码放在一行中,该行将创建一个包含换行符的存储过程。
如何在一个脚本中从视图生成表结构?只需要数据类型,我正在寻找具有某种类型的动态 sql 的表创建脚本
(1) 可以删除主键/约束,
(2) 不在乎是否添加了 null/not null(但是如果有的话会很好)
我在下面提出了示例问题/答案,请随时对未包含在表中的其他数据类型进行代码审查、编辑/优化,特殊情况/问题/例外可能没有考虑在内。顺便说一下,是否有任何开源代码?
表 1 和 2:
create table dbo.Customer
(
CustomerId int primary key,
CustomerName varchar(255),
ZipCode varchar(9)
)
create table dbo.CustomerTransaction
(
CustomerTransactionId int primary key identity(1,1),
CustomerId int,
SalesAmount numeric (10,2),
PurchaseDate datetime
)
Run Code Online (Sandbox Code Playgroud)
看法:
create view dbo.CustomerTransactionVw
as
select
ct.CustomerTransactionId,
ct.SalesAmount,
ct.PurchaseDate,
cust.CustomerId,
CustomerName,
cust.ZipCode
from dbo.CustomerTransaction ct
inner join dbo.Customer cust
on cust.CustomerId = ct.CustomerId
Run Code Online (Sandbox Code Playgroud)
预期的表创建脚本:
create table dbo.CustomerTransactionBigTable
(
CustomerTransactionId int identity(1,1),
CustomerId int,
SalesAmount numeric (10,2), …Run Code Online (Sandbox Code Playgroud) sql-server ×10
backup ×1
dmv ×1
dynamic-sql ×1
log-shipping ×1
memory ×1
metadata ×1
partitioning ×1
query ×1
t-sql ×1
unicode ×1
view ×1
waits ×1