标签: sql-server-2012

在回滚状态下杀死备份数天

我杀死了一个 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。我无法使用不同的名称恢复数据库,因为有一个应用程序在使用它,该应用程序在应用程序中具有硬编码的数据库名称。

如果需要,我可以删除和恢复数据库。我该如何解决这个问题???它被暂停。没有阻塞。

恐怕如果我重新启动服务,它只会在启动时进行回滚。

任何帮助是极大的赞赏!我一生中从未见过这样的事情......

sql-server backup sql-server-2012

2
推荐指数
1
解决办法
1012
查看次数

按月和年分组的正确方法?

我需要按月(和年)分组,我在想:

GROUP BY CAST(YEAR(tDate) AS NVARCHAR(4)) + '-' + CAST(MONTH(tDate) AS NVARCHAR(2))
Run Code Online (Sandbox Code Playgroud)

但是我在网上找到了类似的东西:

GROUP BY YEAR(tDate), Month(tDate)
Run Code Online (Sandbox Code Playgroud)

两者是等价的吗?用第二种比较好?

performance sql-server sql-server-2012 query-performance

2
推荐指数
1
解决办法
5340
查看次数

使用比备份文件少的数据还原数据库

我对 DBA 和 SQL 没有真正的经验,所以我需要你的一些建议。

我有一个生产数据库备份文件,但是它非常大,所以当我执行恢复时,例如,在测试环境中制作数据副本 - 恢复需要很长时间。

我读到:是否可以从备份中部分恢复数据?

它与我想做的类似,但不完全等效。

为了清楚起见,我需要回答以下问题:是否有可能用比备份文件中更少的记录来恢复数据库?

比如备份文件表有100万条记录,我只想恢复1k条记录。

sql-server backup restore sql-server-2012

2
推荐指数
1
解决办法
335
查看次数

SQL Server 中的 MAX 工作线程 2012/14/16

我只是在浏览系统运行状况扩展事件时遇到一个事件,其中包含用于显示工作线程状态的查询处理的诊断结果:

  1. 当我有 80 个逻辑处理器时,为什么最大工作线程显示 2994,根据 msdn 计算,这里 512 + ((logical CPU's - 4) * 16)看起来不正确。但是,这里的最新链接对于大于 64 的逻辑处理器是有意义的,其中 16 的计算更改为 32。但是该链接说从 SQL 2017 开始,但是我得到的数字 2994 是针对 SQL2012, 14 16 的,其中逻辑处理器数为 80 . 我在这里遗漏了什么吗?

sp_configure 中的 max worker 设置设置为“0”

  1. 回到该系统运行状况事件状态,显示以下 no 的警告:

maxWorkers="2944" workersCreated="456" workersIdle="314" tasksCompletedWithinInterval="1021881" pendingTasks="1"

我应该检查其他东西还是可以忽略它?

sql-server sql-server-2012 sql-server-2014 cpu

2
推荐指数
1
解决办法
384
查看次数

针对一个存储过程的 sp_blitzCache

最近我们开始使用 sp_BlitzCache 来帮助我们调整我们的查询。我们发现一个 SP 有一些问题,我们能够成功地重构它。

在我们调整查询之前的一周内,我有一份 sp_BlitzCache 的输出副本,可在此处获得

https://drive.google.com/open?id=1oiAEl62ZT51qcCEhVzkg8oDA3HB-NCsv

生成此输出的命令运行是

exec sp_BlitzCache @StoredProcName = 'hs_UpdateShipmentPackagesAndWeightSp'
Run Code Online (Sandbox Code Playgroud)

几个问题

1)我注意到我们有多个行用于同一个计划句柄,这是为什么?

2) 您会注意到成本最高的查询 (1451) 具有整个 create procedure 语句的查询文本,这是什么意思?该行的指标是否仅用于创建存储过程?

3) 对于成本最高的行,即上面提到的行,它的最小/最大授权几乎为 2GB。这是否意味着当我们运行 create procedure 语句时,它要求 2gb 的内存?还是在调用 proc 时使用此计划?我想这与问题 2 的答案有关

4) 为什么在某些情况下我们有 Min/Max grant KB > 0 和 Min/Max used grant kb > 0,但百分比内存授权为 null ?

我们正在运行 SQL Server 2012。

谢谢,凯文

sql-server execution-plan sql-server-2012 sp-blitzcache

2
推荐指数
1
解决办法
953
查看次数

日志传送备用服务器上的慢选择查询

我们在主 DC 中有一个大约 15 TB 的数据库,其中包含分区表,其中最大的一个大约 7 TB。

为避免用户报告 LS 设置是在不同 DC 中为上述数据库完成的,其中 LS 还原作业每晚运行一次。

在 Primay-update stats 和 update stats AYNC 都设置为 True,因此在辅助上反映相同。我不确定为什么有人同时启用这两个功能,应该是这样吗?

现在在次要方面,我看到当从用户运行 SELECT 查询时会发生很多阻塞,结果是 select statman 语句用于该只读数据库的自动更新统计信息。

我不明白为什么在启用自动更新异步时会有一个?

此外,在 LS 恢复期间是否会恢复在主要(每周一次)上完成的更新统计信息?如果没有,在 LS 备用模式中涉及的辅助数据库上运行更新统计信息的更好方法是什么,可能是每天运行以获得更好的选择性能?

请指教

sql-server statistics sql-server-2012 log-shipping

2
推荐指数
1
解决办法
672
查看次数

WHERE 基于多列

我正在尝试在 sql server 2012 中实现类似的功能。但是这种语法不存在。它有什么替代方案,为什么 sql server 不支持这种语法糖?

这意味着 C1 匹配 D1,C2 匹配 D2,Cn 匹配 Dn。当所有列匹配时,它只会过滤掉结果。

SELECT * FROM tableA
WHERE
   ([C1], [C2],..., [Cn]) IN (SELECT [D1], [D2],..., [Dn] FROM tableB)
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

2
推荐指数
1
解决办法
1657
查看次数

在 SQL Server Express 2012 SP1 中找不到数据库邮件功能

我需要在我的项目中使用 SQL Server 数据库邮件功能。但是数据库邮件在我的开发实例上似乎不可用。

对象资源管理器中应该有一个“数据库邮件”节点。在此屏幕截图中,我似乎找不到任何内容。还显示了我的 SQL Server 版本。

在此处输入图片说明

此 SQL Server 版本不支持数据库邮件吗?使用数据库邮件需要哪个 SQL Server 版本(或版本)?

我可以在网上找到的所有文档总是假设该功能已经安装,然后继续解释如何配置它。如果我的 SQL Server 版本支持数据库邮件,如何安装/启用该功能?

sql-server sql-server-2012 sql-server-express database-mail

2
推荐指数
2
解决办法
598
查看次数

是否可以将 SQL Server 2005 Standard 就地升级到 SQL 2012 Enterprise?

目前,我有一个 SQL 2005 标准框。我想就地将其升级到 SQL 2012 Enterprise。当我说到位时,我指的是类似于 Office 2010 的安装,例如,它删除旧的 (Office 2007) 版本,将自身绑定到其前身曾经拥有的扩展并保留所有设置。

这可能吗?

如果不是,应该走什么程序?到目前为止,我得到了这个。

  1. 备份数据库
  2. 写下所有设置。
  3. 卸载 SQL 2005。
  4. 安装 SQL 2012 企业版。
  5. 恢复设置
  6. 恢复数据库。

sql-server-2005 sql-server upgrade sql-server-2012

1
推荐指数
1
解决办法
1751
查看次数

大表上的查询性能调优

我有下表交易。该表如下所示:

CREATE TABLE [dbo].[Transactions](
[TransactionID] [bigint] IDENTITY(1,10) NOT NULL,
[PlayerID] [bigint] NOT NULL,
[BalanceTransactionTypeID] [int] NOT NULL,
[BalanceTransactionSubTypeID] [int] NULL,
[PointDelta] [money] NULL,
[TransactionDate] [datetime] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

该表包含以下约束和索引。

CONSTRAINT [PK_Transactions] PRIMARY KEY CLUSTERED 
(
[TransactionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,     
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE NONCLUSTERED INDEX [IX_Transactions_PlayerID] ON [dbo].    
[Transactions]
(
[PlayerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,     
DROP_EXISTING = OFF, …
Run Code Online (Sandbox Code Playgroud)

performance index-tuning sql-server-2012 query-performance

1
推荐指数
1
解决办法
1161
查看次数