在我的数据库上运行 sp_BlitzIndex 后,我发现了许多“主动索引”(https://www.brentozar.com/blitzindex/sp_blitzindex-aggressive-indexes/)。不仅如此,我还发现“积极索引”的数量正在缓慢增加。
我是一名涉足 DBA 方面的开发人员,我不知道如何从 sp_BlitzIndex 提供的有关主动索引的信息改进它们。
我可以调整单个查询的性能,但是我不知道如何找出索引变得激进时可能发生的查询,并且我假设发生锁定是因为服务器负载不足 - 这不会如果我调整单个查询,情况并非如此。
任何有关如何进一步调查的提示将不胜感激。
我在 SQL 2016 上创建了一个 SQL Server 作业。这是一个从我们的备份实用程序 DDBoost 运行完整备份的作业。当我执行作业时,所有数据库的备份将在 5 分钟内完成。但是,该作业将永远运行。有任何想法吗?
USE [master]
GO
DECLARE @returnCode int
EXEC @returnCode = dbo.emc_run_backup
' -c <FullyQualifiedName> -k -S 4 -l full -y +90d
-a "NSR_DFA_SI=TRUE" -a "NSR_DFA_SI_USE_DD=TRUE"
-a "NSR_DFA_SI_DD_HOST=adc-dd-02" -a "NSR_DFA_SI_DD_USER=ddboost"
-a "NSR_DFA_SI_DEVICE_PATH=/sql-prod"
-a "NSR_DFA_SI_DD_LOCKBOX_PATH=D:\Program Files\EMC DD Boost Modules\DDBMA\config"
-a "NSR_SKIP_NON_BACKUPABLE_STATE_DB=TRUE"
-a "SKIP_BACKUP_PROMOTION=FALSE" "MSSQL$PRSQL01:"'
IF @returnCode <> 0
BEGIN
RAISERROR ('Fail!', 16, 1)
END
Run Code Online (Sandbox Code Playgroud) 需要帮助解决使用Ola Hallengren 的存储过程将数据库备份到共享文件夹的问题。
我有一个在 SQL Server 启动时执行的过程。它运行Ola Hallengren的DatabaseBackup程序。SQL Server 服务在NT Service.
该共享对运行 SQL 的计算机具有权限。
现在,如果DatabaseBackup手动执行它会很好。当它在启动时自动执行时失败并出现以下错误:
Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 786 [Batch Start Line 0] 目录 \\*** 不存在
如果我用Execute As DBO子句更改程序,它会失败并出现相同的错误。
我也试过AlterSP withExecute As Self子句 - 又是同样的错误。
所以问题是:
我该怎么做才能让它发挥作用?
\\machine2\backup\)我已经实现了 XE 来捕获我的实例上的阻塞(根据这篇很棒的文章https://www.brentozar.com/archive/2014/03/extended-events-doesnt-hard/#comment-2470072。)
我这样做是因为我一直关注阻塞状态,使用查询的这种美:
select
db_name(database_id) DB,
object_name(object_id) Obj,
row_lock_count + page_lock_count No_Of_Locks,
row_lock_wait_count + page_lock_wait_count No_Of_Blocks,
row_lock_wait_in_ms + page_lock_wait_in_ms Block_Wait_Time_in_ms,
index_id
from
sys.dm_db_index_operational_stats(NULL,NULL,NULL,NULL)
order by
Block_Wait_Time_in_ms desc
Run Code Online (Sandbox Code Playgroud)
偶尔会在文件中记录一些阻塞,但没有我预期的那么多。我的期望是查询中 No_Of_blocks 中的数字将与根据 XE 记录到文件中的块数相对应。
与查询相比,XE 是否可能无法捕获任何内容?有任何想法吗?感谢您的反馈意见!
我有一个 SQL 数据库服务器,它使用R1Soft 备份备份每 24 小时在 02:00 进行一次服务器备份。这是一个完整的文件系统备份(裸机加上每日差异,因此包括操作系统等)。
我想增加一些数据库的备份频率,以便在发生故障时,我可以恢复到15分钟的时间窗口,例如
我无法找到任何关于清晰度是否R1Soft备份(通过完成VSS写入),会引起我的做法任何问题(particuarly打破日志链)。我对 VSS 知之甚少,而且我读得越多,它就越令人困惑。
我联系了 R1Soft 澄清,他们的回应是:
我们正在使用 VSS 进行 SQL 备份。您可以使用这两种解决方案,只要它不会同时运行。我们使用 VSS 编写器将日志刷新到数据中,然后完全备份数据库。
这对我来说毫无意义,因为我不知道他们所说的"data"是什么意思,并且它没有澄清日志链问题。因此,任何有 VSS 经验的人都可以澄清 VSS 备份是否“干扰”本机完整/传输日志备份?从我的研究中,我看到了相互矛盾的消息,因为 Microsoft 站点指出:
SQL Writer 不支持...日志备份
我不知道我是否应该按照我的建议去做,还是应该改为
任何输入,即使只是为了突出我应该问他们的问题,也将不胜感激。我读得越多,我就越困惑。
database_name backup_start_date backup_finish_date expiration_date backup_type backup_size MB logical_device_name physical_device_name backupset_name description is_copy_only is_snapshot checkpoint_lsn database_backup_lsn differential_base_lsn first_lsn fork_point_lsn last_lsn
--------------- ----------------------- ----------------------- ----------------- ----------- ------------------ ----------------------- --------------------------------------------------- --------------- …Run Code Online (Sandbox Code Playgroud) 在我的数据库错误日志(在这个答案中生成)中,我看到以下查询的许多实例(每天数百个):
声明@HkeyLocal nvarchar(18) 声明@ServicesRegPath nvarchar(34) 声明@SqlServiceRegPath 系统名 声明@BrowserServiceRegPath 系统名 声明@MSSqlServerRegPath nvarchar(31) 声明@InstanceNamesRegPath nvarchar(59) 声明@InstanceRegPath 系统名 声明@SetupRegPath 系统名 声明@NpRegPath 系统名 声明@TcpRegPath 系统名 声明@RegPathParams 系统名称 声明@FilestreamRegPath 系统名 选择@HkeyLocal=N'HKEY_LOCAL_MACHINE' -- 基于实例的路径 选择@MSSqlServerRegPath=N'SOFTWARE\Microsoft\MSSQLServer' 选择@InstanceRegPath=@MSSqlServerRegPath + N'\MSSQLServer' 选择@FilestreamRegPath=@InstanceRegPath + N'\Filestream' 选择@SetupRegPath=@MSSqlServerRegPath + N'\Setup' 选择@RegPathParams=@InstanceRegPath+'\Parameters' - 服务 选择@ServicesRegPath=N'SYSTEM\CurrentControlSet\Services' 选择@SqlServiceRegPath=@ServicesRegPath + N'\MSSQLSERVER' 选择@BrowserServiceRegPath=@ServicesRegPath + N'\SQLBrowser' -- InstanceId 设置 选择@InstanceNamesRegPath=N'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL' - 网络设置 选择@NpRegPath=@InstanceRegPath + N'\SuperSocketNetLib\Np' 选择@TcpRegPath=@InstanceRegPath + N'\SuperSocketNetLib\Tcp' 声明@SmoAuditLevel int exec master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'AuditLevel', @SmoAuditLevel OUTPUT 声明 @NumErrorLogs int exec master.dbo.xp_instance_regread @HkeyLocal、@InstanceRegPath、N'NumErrorLogs'、@NumErrorLogs …
我有一台包含 100 个数据库的服务器,我有一个用于备份的维护计划 (MP)。我注意到,当我查看备份文件夹目标时,维护计划不会备份所有数据库,我可以看到它在 50 个数据库之后停止 +-。作业仍处于运行模式 - 它不会停止。
因此,一方面,我可以看到没有新的备份文件(在前 50 个之后),另一方面,作业并未停止。
sql-server backup maintenance sql-server-2012 maintenance-plans
我很确定答案是什么,但我想确认一下。有没有办法创建 SQL Server 2012 到 SQL Server 2016 的混合数据库镜像。
我在 SSMS 中执行一条语句,例如:
select Ident
from PART_Stamm
where VerketteterArtikelID = 'D9FA5CEC-E3C5-11E6-B088-F079596E5F58'
Run Code Online (Sandbox Code Playgroud)
在那里我可以显示执行计划。这完美地工作。现在我还需要显示PART_Stamm在执行上述查询期间在表上获取的锁数。我怎样才能得到这些信息?
我有一个 SQL Server 2017 之前的数据库,我恢复到/升级到 SQL Server 2017。在这个数据库中,我有一个 SQLCLR 程序集。程序集被标记为SAFE因为它不执行任何需要更高级别权限的操作,并且数据库已TRUSTWORTHY禁用 / OFF。SQLCLR 函数和存储过程在迁移到 SQL Server 2017 之前按预期工作,但现在当我尝试执行其中任何一个时,我收到以下错误:
消息 10314,级别 16,状态 11,服务器 XXXXXXXXXXX,行 YYYYYY
在 Microsoft .NET Framework 中尝试加载程序集 ID ZZZZZ 时出错。服务器可能会耗尽资源,或者程序集可能不受信任。再次运行查询,或检查文档以了解如何解决程序集信任问题。有关此错误的更多信息:
System.IO.FileLoadException:无法加载文件或程序集“{assembly_name}”,版本=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。发生与安全相关的错误。(来自 HRESULT 的异常:0x8013150A)
我已确认已在服务器/实例上启用 CLR 集成/SQLCLR。
sql-server ×10
backup ×2
blocking ×1
errors ×1
jobs ×1
locking ×1
maintenance ×1
mirroring ×1
performance ×1
security ×1
sql-clr ×1
vss ×1