标签: sql-server-2016

升级到 2016 后,无法查看 SQL Server 日志

刚刚从 SQL Server 2014 SP1 CU4 升级到 SQL Server 2016。

这是一个集群实例

我不再能够使用 xp_readerrorlog 和 xp_enumerrorlog

Msg 22004, Level 16, State 1, Line 10
Failed to open loopback connection. Please see event log for more information.
Msg 22004, Level 16, State 1, Line 10
Error log location not found.
Run Code Online (Sandbox Code Playgroud)

找到此链接: 无法打开 SQL Server 日志

  • 我可以通过文件资源管理器手动打开错误日志
  • SQL Server 服务的启动参数指示错误日志的正确位置。
  • 在实例上运行修复没有解决问题
  • 为实例禁用共享内存并没有解决问题。
  • 在所有这些问题和修复后重新启动没有帮助
  • 没有别名用于连接到此实例
  • 127.0.0.1 在主机文件中

基本上他们说要修复实例。

还有其他选择吗?

sql-server upgrade error-log sql-server-2016

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

超级易变表有哪些选项?

我继承了一个非常不稳定的表,它是一个映射谁拥有系统中的资源。在任何给定的时刻,可能有十几个插入/删除/读取与该表相反。但是,系统中永远不会超过 30-40 行。

系统是SQL 2000时代写的,对表的访问是通过sp_getapplock/sp_releaseapplock系统sprocs序列化的,所以只有1个请求在修改表。此外,INSERT & DELETE 语句执行WITH (TABLOCK)。阅读十年前的笔记,它指出如果没有这些限制,系统将经历不间断的死锁。

我已将数据库移植到 SQL Server 2016 企业版。现在系统的吞吐量增加了 10 倍,这张表很容易成为最大的瓶颈。

对于像 SQL 2016 这样易变的表,我有哪些选择?

我正在寻找快速(希望是并发)访问并且没有死锁。

sql-server deadlock sql-server-2016

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

ALTER DATABASE MODIFY FILEGROUP [myfilegroup] AUTOGROW_ALL_FILES

我想将数据库中的所有文件组更改为 AutoGrow_all_Files,但前提是它当前是 AutoGrow_Single_File,如下所示:

ALTER DATABASE mydatabase MODIFY FILEGROUP [myfilegroup] AUTOGROW_ALL_FILES
Run Code Online (Sandbox Code Playgroud)

如何检查此数据库属性?

sql-server sql-server-2016

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

SQL SERVER 2016 高 CPU

我有一台装有 SQL Server 2016 的全新服务器。

它有 24 个 CPU,大约 80go 的 RAM。

问题是,有时,CPU 会变得非常高(> 70%),而没有任何具体原因。

如果我查看“execute sp_WhoIsActive @get_locks=1”,我会运行大约 40 个查询,但没有锁定,其中一些查询超过 30 秒而不是几毫秒。

这在生产中大约每天附加一次。到目前为止,我唯一的解决方法是将选项“并行成本阈值”从 90 更改为 89,从 89 更改为 90。更改此值实际上可以在不到 10 秒的时间内解决问题,并且 CPU 费用越来越低,并且我的用户更快乐。

你们知道这个问题的根源吗?我已经考虑过计划缓存,但我不知道如何处理这个想法......

编辑:我已禁用英特尔超线程,但问题仍然存在。我已经安排了一个每小时清理缓存的任务。你有什么主意吗 ?

编辑 2:我在 Microsoft 支持上打开了一个问题。显然,重新启动 SQL Server 2016 解决了页面保留问题。如果我有一个“真正的”修复程序,我会尽快通知您。

performance parallelism plan-cache sql-server-2016

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

资源池统计计数器报告为零

我在我的 2016 SQL Server 上使用资源调控器。在之前的 2016 SQL Server 版本中,此查询:

select *
from master.sys.dm_os_performance_counters opc
where opc.object_name = 'SQLServer:Resource Pool Stats'
and counter_name = 'CPU usage target %'
Run Code Online (Sandbox Code Playgroud)

将根据资源池配置设置和系统负载产生资源池的 CPU 使用率目标值。但是,现在它们始终为零。

我还使用 perfmon 来确认这一点(以及运行合法查询)。有谁知道为什么或者这个计数器是否改变了?根据msdn文章,它应该仍然有效。

sql-server dmv sql-server-2016

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

使统计数据无效的最快方法

我正在对同步与异步自动统计更新进行一些测试。我想快速使所有统计对象(标题、密度向量和直方图)失效,以确保下次使用统计时会更新

我正在尝试模拟统计数据的自动更新,而不是自动创建。

理想情况下,我不想更改行数,因此我已取消INSERT/DELETE操作。理想情况下,我也不想更改任何数据值,我已经考虑使用UPDATE语句,但我认为这在我的一些较大的表上可能需要太长时间。

我已经看过了,UPDATE STATISTICS WITH ROWCOUNT, PAGECOUNT但我认为这不是我所追求的。我希望可能有一个跟踪标志或未记录的命令会使统计数据无效。

有没有一种快速有效的方法来完成我没有考虑过的我想要实现的目标?

我正在 SQL Server 2016 上进行测试。

sql-server statistics sql-server-2016

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

诊断缓慢的 Always On 提交

两个节点 Always On 可用性组,一个同步副本。

我的同步副本经常不同步。我看到一种模式,当在辅助副本上进行日志备份时,会出现短暂的延迟,在此期间 redo_queue_size 会迅速填满,如下所示:

在此处输入图片说明

[1]:https://i.sta

查看以下链接中的指南,似乎我的问题主要是由于尝试强化事务时重做线程遇到的争用:

https://technet.microsoft.com/en-us/library/dn135335(v=sql.110).aspx

当事务日志备份运行时,副本进一步不同步,并且在辅助副本上运行的报告也会加剧此问题。

一直以来,我的事务日志备份都很大——平均 1.2GB,但可以更大。

据我所知,我的日志备份会很大,因为我在数据库上启用了 TDE,但我真的没想到它们会这么大。我怀疑这是对辅助副本上的缓慢提交贡献最大的原因。

是否有推荐的性能计数器来诊断同步副本上的慢提交?我还能做些什么来验证我的理论?

我的问题似乎与此处描述的相同:https : //www.sqlservercentral.com/Forums/1871286/AlwaysOn-Missing-Redo-Thread

我可以只在辅助副本上启用此跟踪标志,还是需要应用于两个节点?

编辑:我在早上 6 点检查重做队列,发现一个巨大的数字,恢复时间为 15-20 分钟,并且一直在略有增加。然后我应用了跟踪标志,DBCC TRACEON (3459, -1)几分钟后发现,重做命令的数量下降得非常快。到目前为止,这个跟踪标志似乎已经缓解了这个问题,但据推测,这会将所有事务强化到单线程模式下的辅助副本日志,如 SQL Server 2014,因此,辅助副本仍有可能落后由于非并行线程,当主线程处于高写入负载时。

performance availability-groups windows-server sql-server-2016

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

将数据库邮件配置保存到临时表中

我目前正在处理一堆服务器,它们有不同的数据库邮件配置。

我可以看到每个服务器的数据库邮件配置

我使用以下脚本:

--==========================================================
-- getting the Database Mail Configuration
-- Marcelo Miorelli
-- 1-April-2014
--==========================================================

select @@servername
--SQLSALON1\STOCKALLOCATION



-- http://dba.stackexchange.com/questions/47058/how-can-i-see-the-current-database-mail-configuration

EXEC msdb.dbo.sysmail_help_configure_sp;
EXEC msdb.dbo.sysmail_help_account_sp;
EXEC msdb.dbo.sysmail_help_profile_sp;
EXEC msdb.dbo.sysmail_help_profileaccount_sp;
EXEC msdb.dbo.sysmail_help_principalprofile_sp;

EXEC msdb.dbo.sysmail_help_account_sp
Run Code Online (Sandbox Code Playgroud)

实际上,msdb.dbo.sysmail_help_account_sp在这方面,程序是我最喜欢的。

现在我想通过电子邮件发送前一天的备份历史记录(仅完整备份和差异备份),我需要找出每个服务器的配置文件名称。

我想通过将上述过程的内容保存到临时表或表变量中来完成此操作,并在我拥有所需的所有数据并且即将通过电子邮件发送给他们时从中查询信息。

对于那些程序,特别是 sysmail_help_account_sp,我该如何做到这一点?

我特别需要找出profile name. 我已经用于DBA下面的脚本。

这是我用来生成电子邮件内容的脚本:

--=====================================================================================================================
-- sql server backups report in HTML format to be emailed   
--http://dba.stackexchange.com/questions/81432/how-do-i-use-powershell-to-get-a-sql-server-backup-status

--marcelo miorelli
--19-nov-2014
--=====================================================================================================================

   DECLARE @Body VARCHAR(MAX),
        @TableHead VARCHAR(MAX),
        @TableTail VARCHAR(MAX)
    SET NoCount ON ; …
Run Code Online (Sandbox Code Playgroud)

sql-server backup dynamic-sql database-mail sql-server-2016

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

如何连接到微软azure?

我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组

这就是我备份和保存到 azure 的方式

    sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master 
-Q "EXECUTE dbo.DatabaseBackup 
@AvailabilityGroups = 'SQLAG',
@URL = 'https://MYCOMPANYbackups.blob.core.windows.net/SQLMAINSERVER-datafiles-full',
@Credential = 'SQLAzureCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)

这是我在尝试连接到 Azure 时看到的:我的存储帐户是什么? 在此处输入图片说明

我有一份工作,我计划向我发送一封关于服务器上所有备份的电子邮件。收集有关备份的信息并发送电子邮件脚本在这里

电子邮件告诉我备份在哪里。例如:

这是一张用于说明目的的图片: 在此处输入图片说明

我如何才能访问备份文件?

这些azure 权限在哪里管理

编辑:

大卫布朗的回答让我明白了,谢谢大卫。

我只是在这里添加了一组将我带到备份的步骤(在成功连接到 azure 之后)。

01 - 点击 Blob

在此处输入图片说明

02 - 选择其中一个容器

在此处输入图片说明

03 - 文件将在那里 - 准备下载

在此处输入图片说明

这篇文章也很有趣:

第一眼:在资源管理器部署中备份文件和文件夹

sql-server backup availability-groups sql-server-2016 azure-blob-storage

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

通过查询查看视图定义需要什么权限?

我对我们的数据库拥有完全的管理员权限,因此可以查询和查看视图定义。但是,我想在 JDBC Jenkins 作业魔术中使用只读用户查询视图。问题:与我的管理员用户不同,只读用户看不到视图的代码/定义。

当我担任管理员时,此查询为我提供了所有视图所需的所有视图定义和元数据:

SELECT name AS VIEW_NAME,
definition,
create_date,
modify_date  
FROM [my_database].[sys].[all_views]
JOIN [my_database].[sys].[sql_modules]
ON [my_database].[sys].[all_views].object_id = [my_database].[sys].[sql_modules].object_id
Run Code Online (Sandbox Code Playgroud)

结果,当以管理员身份执行查询时,我得到如下条目:

name        | definition        | create_date | modify_date 
sample_view | SELECT * FROM bla | 01.01.2017 | 02.01.2017
Run Code Online (Sandbox Code Playgroud)

然而,当我用我的只读用户做这件事时,我得到了

 name        | definition        | create_date | modify_date 
 sample_view | null              | 01.01.2017  | 02.01.2017
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到我对只读用户的权限配置。尽管我已授予他必要的权限,但用户在结果集中看不到视图定义。

更奇怪的是,在允许用户执行 SELECT 和 VIEW 定义语句并保存配置之后,SELECT 和 VIEW DEFINITION 的第二个条目被添加到配置表中。

只读用户权限

sql-server ssms view sql-server-2016

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