小编Kin*_*hah的帖子

确定实际的服务器创建日期

我有兴趣确定我所有 70 多台服务器的年龄。我想创建一个增长图,显示服务器和数据库何时/每月或每年添加到环境中。我使用 SSMS 多查询功能执行了以下查询,但仅部分成功。

SELECT [name], create_date FROM sys.databases
Run Code Online (Sandbox Code Playgroud)

这是部分成功,因为当我知道我在过去几年中创建了其中一些服务器时,主数据库和模型数据库返回的日期为“2003 年 4 月 8 日”。

我每周多次将数据库从一台服务器刷新到另一台服务器,这似乎会导致数据库创建日期出现问题。

是否有一种简单的方法可以确定服务器和数据库的实际创建日期?

sql-server installation

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

AlwaysON :Log_Send_Queue_Size 正在增加但 log_send_rate 一直在减少?

  1. 为什么尽管这两个数据库的 log_send_queue_size 越来越大,但 log_send_rate 却一直在下降?
  2. 此时网络上没有带宽问题,其他数据库也没有遇到此问题。如果再次发生这种情况,除了必须通过辅助数据库手动还原主数据库以重新同步该对之外,是否有推荐的修复方法?

环境 :

SQL 2012,SP1 CU7(内部版本 3393)

Windows Server 2012 标准版(内部版本 9200)

10 个数据库的可用性组 (PRDDB1-AG1)

2 个 AG 副本,一个在伦敦,一个在纽约(LDSERVER1 和 NYSERVER1),主要在纽约,次要在伦敦。

AG1 中的 2 个数据库,E-DB1(50GB 日志文件)和T-DB2(250GB 日志文件)

T-DB2从客户数据库导入文件,对其进行处理(大量日志活动),然后输出到/更新数据E-DB1的数据库。

此过程会针对两个数据库生成大量数据流失和日志活动。我们偶尔会在伦敦和纽约数据库副本之间出现延迟高峰,最多可能每周一两次,但这些总是在几个小时内清除。

问题 :

上周我们看到 log_send_queue_size 增加,而 log_send_rate 减少。这从星期一开始,一直持续到星期五晚上,当时它是手动解决的(请参阅下面的修复部分)。最低时,E-DB1 数据库的 log_send_rate 刚刚超过 100KB/秒,log_send_queue 超过 40GB。T-DB2 数据库的 log_send_rate 为 2000KB/sec,缩小到 300KB/sec,log_send_queue 超过 300GB。

这导致可用性组内这两个数据库的主副本和辅助副本之间的延迟量增加。其特点是在每个受影响的数据库的事务日志中积累了日志活动,这是意料之中的。由于这种延迟,每个受影响的数据库的日志扩展到日志驱动器有空间不足的危险。

这种延迟只发生在这两个数据库上,尽管可用性组内所有数据库的事务活动出现了一些相当大的峰值,这是正常的。

在整个问题中,辅助节点上的重做队列中没有堆积,并且 redo_rate 保持高位。这意味着该问题是由于两个受影响数据库的发送速率都很低造成的。

尝试的步骤

  1. 暂停 T-DB2 数据库的数据移动。我希望这可以为优先级数据库 E-DB1 释放网络带宽。没有效果。

  2. 重新启动辅助节点 (LDPRDENTDB1)。没有效果。 …

performance sql-server-2012 availability-groups

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

即时文件初始化

如何检查我的 PROD 服务器上是否启用了 IFI?

我做了以下检查:

  1. 确保运行 SQL Server 的服务帐户是管理员组的一部分。

  2. 为“管理员”设置了执行卷维护任务权限

这是否意味着启用了 IFI?

sql-server

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

维护计划重建idex后,事务日志变得巨大

几天前,我正在使用 SQL Server 2008 中的维护计划测试一些东西。

我创建了一个来重建索引并每周进行一次完整备份。(我知道,我今天发现了坏事)。

问题是,由于事务日志增长了很多(大约 80gb,db 是 60gb),备份没有运行。现在我一整天都在谷歌上搜索,看看是否有办法将事务日志缩小到以前的大小,比如 200mb。

更新

这是在我们的生产服务器上,维护计划如下:

重建索引

成功备份完整数据库

成功时 删除超过两周的备份。

这还没有完成,它在某个时候坏了,所以我想重建索引花了太长时间。所以备份没有发生。

我们还每小时备份一次交易日志。

这可能吗?为什么会发生这种情况?我知道在重建时它会在事务日志或类似的东西中创建索引的副本,但是有可能摆脱这个副本吗?

这就是我在 Job History 上的内容,所以看起来由于某种原因它在创建索引时失败了,并且由于计划成功进行备份,它停在那里。

信息 :

以用户身份执行:SHOCKLOGIC\DB1$。...ress: 2013-08-05 03:01:03.43 Source: Rebuild Index Task Executing query "ALTER INDEX [PK_ActivitiesPerGroup] ON [dbo].[Acti...".: 12% Complete End Progress Progress: 2013- 08-05 03:01:03.43 来源:重建索引任务执行查询“USE [Eventlogic]”。:完成 12% 结束进度进度:2013-08-05 03:01:03.52 来源:重建索引任务执行查询“ALTER INDEX [PK_ActivitiesPerHotelCat] ON [dbo].[A...".: 12% complete End Progress Progress: 2013-08-05 03:01:03.52 Source: Rebuild Index Task Executing query "USE [Eventlogic] ".: 12% complete End Progress Progress: 2013-08-05 …

sql-server-2008 backup maintenance transaction-log

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

链中缺少交易登录,可以跳过

我们的一个客户端 SQL Server 崩溃了,需要将其恢复到最近的可能时间。我们有从周一开始的完整备份以及每小时运行一次的事务日志,直到今天凌晨 02:01,但是我们缺少数据库中的一个事务日志,因此我们只能将该数据库恢复到周三。

是否可以跳过事务日志并继续使用剩余日志将数据库恢复到最新日期?

编辑:在我们失踪时没有对数据库进行任何更改,因此事务日志中将没有任何内容

sql-server restore transaction-log

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

在 ASYNC 模式下检查两个 Always On Availability Group 服务器之间的数据延迟

我在两台主服务器和辅助服务器之间以异步模式实现了 Always on Availability Group。

当我尝试使用性能计数器(如 MS SQL:availability replicaMS SQL:database replica和 )检查性能监视器中服务器之间的数据延迟时MS SQL:databases,我在图中看不到任何结果。

但该图显示了其他性能计数器的结果。我尝试使用 DMV 获取数据延迟sys.dm_hadr_database_replica_states

任何人都可以告诉我这是什么问题吗?

如何使用msdn 文章中所示的图表检查性能监视器中两台服务器之间的数据延迟 ?

sql-server availability-groups

4
推荐指数
1
解决办法
3万
查看次数

正在运行的 SQL 作业 - 如何终止

我运行了下面的查询,它显示了当前正在运行的作业的列表。然而,在活动监视器中,这些都没有运行。我如何验证这些是否正在运行?

我该如何杀死他们?

    select sj.name
    ,sja.*
from msdb.dbo.sysjobactivity as sja
inner join msdb.dbo.sysjobs as sj on sja.job_id = sj.job_id
where sja.start_execution_date is not null
and sja.stop_execution_date is null
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

sql-server sql-server-agent jobs

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

报告镜像或复制的最佳解决方案?

嗨,我有 SQL SERVER 2008R2 数据中心版,我使用 SSRS 和供应商应用程序进行报告。我有一个报告服务器,我们每天从 Live Server 备份和恢复,以便为我们的报告提供数据。

因此,我面临许多问题,因此开发的任何代码都必须等待一天,直到恢复完成才能进行测试。任何在 Reporting Server 上开发的代码都是重写的。惊喜报告显示了一天前的数据,我可以继续下去。

我知道我有两个可用的镜像和复制选项:

镜像将允许只读模式并且报告运行正常吗?这种只读模式是否有我遗漏的任何其他含义?

复制我在所有表上都没有主键,所以我只能选择使用全局唯一标识符 (GUID) 的合并复制选项,我不能让 sql server 将此列添加到我数据库中的所有表中。

任何人都可以建议我在另一台服务器上为报告目的拥有 Sql Server 数据库的 Live Copy 的解决方案吗?

我的要求

  1. 我可以忍受几分钟的旧数据。
  2. 在生产服务器上所做的任何更改都需要复制到报告服务器,即数据、Sql Server 对象(表、视图、存储过程、一切)
  3. 在报告服务器上创建的任何对象都不需要复制到生产服务器/数据库。

请建议任何解决方案,因为这将是一个很大的帮助提前谢谢你。

replication sql-server ssrs mirroring sql-server-2008-r2

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

用评论创建索引

我想在我的索引中添加一些评论。所以我在索引创建脚本中添加了一些额外的信息,希望在我再次打开脚本时再次看到这个评论。但它不见了。

样本:

CREATE NONCLUSTERED INDEX test3
/* 
 Created on ...
 Reason: ... 
 Improvement: 95 - 99,8% ...
*/
ON [dbo].[T] 
(   
/* equal */
[ID], [Nr], [D], 
/* inequal */
[S], [OD])
INCLUDE 
([A], [C] )
Run Code Online (Sandbox Code Playgroud)

SCRIPT => CREATE SCRIPT在 SSMS 中选择后,所有评论都消失了。

有没有人知道让他们活着的解决方案?

index ssms sql-server-2008-r2

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

具有可重复读隔离级别的死锁

尝试了解调用存储过程时可重复读隔离级别发生的死锁。

这是死锁 xml:

    <TextData>
  <deadlock-list>
 <deadlock victim="process6fac029848">
  <process-list>
   <process id="process6fac029848" taskpriority="0" logused="0" waitresource="KEY: 8:72078600230076416 (d3c590b351cd)" waittime="1171" 
            ownerId="26116633497" transactionname="delete" lasttranstarted="2021-01-07T10:35:38.317" XDES="0x12553cbe3b0" 
            lockMode="U" schedulerid="3" kpid="19776" status="suspended" spid="92" sbid="0" ecid="0" priority="0" trancount="2" 
            lastbatchstarted="2021-01-07T10:35:38.310" lastbatchcompleted="2021-01-07T10:35:38.310" lastattention="1900-01-01T00:00:00.310" 
            clientapp=".Net SqlClient Data Provider" hostname="web01" hostpid="34852" loginname="someuser" 
            isolationlevel="repeatable read (3)" xactid="26116633497" currentdb="8" currentdbname="db1" lockTimeout="4294967295" clientoption1="673316896" 
            clientoption2="128056">
    <executionStack>
     <frame procname="db1.schema.deleteSP" line="124" stmtstart="8308" stmtend="8870" 
            sqlhandle="somehandle">
UPDATE [schema].[TableName] WITH(UPDLOCK)
        SET
            Status = 1 /* STATUS_DELETED */,
            userid = @id,
            UpdateTime = GETUTCDATE()
        FROM @oldatt oa
        WHERE [TableName].[Id] = oa.Id     </frame>
    </executionStack> …
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock sql-server-2014

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