标签: sql-server

如何检查数据库是否启用了 AUTO_CREATE_STATISTICS/AUTO_UPDATE_STATISTICS

我有一个项目数据库,它维护来自不同环境(开发、测试、生产、predprod...)的不同数据库,我需要检查是否AUTO_CREATE_STATISTICSAUTO_UPDATE_STATISTICSis设置为OFF/ON针对每个数据库以及是否将OFF其更改为ON.

ALTER DATABASE  DB
SET AUTO_CREATE_STATISTICS ON

ALTER DATABASE  DB
SET AUTO_UPDATE_STATISTICS ON
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

sql-server t-sql sql-server-2017

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

无法从 .BAK 文件恢复数据库

我正在尝试恢复我的 .bak 文件,但我不断收到错误消息

数据库“DataWarehouse”恢复失败。(Microsoft.SqlServer.Management.RelationalEngineTasks)
System.Data.SqlClient.SqlError:还原数据库异常终止(Microsoft.SqlServer.SmoExtended)

我尝试恢复的 .bak 文件是否已损坏?

我采取的步骤是

1) 右键单击​​服务器名称并选择恢复
2) 导航到 .bak 文件的位置
3) 单击“确定”

sql-server sql-server-2016

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

在 SQl Server 中恢复备份所需的最小磁盘空间?

假设我要在 SQL Server 中恢复备份(2 GB),我的磁盘中有足够的空间(20 GB),但是 SQL Server 是否遵循任何算法来计算所需的最小磁盘空间或只是随机检查磁盘空间和备份才能成功恢复。

因为我想了解SQL Server的内部工作原理。

提前致谢。

database-design sql-server backup disk-space restore

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

显示 sys.time_zone_info 表定义的 T-SQL 查询

以下查询可用于显示自定义表的定义。

SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
       , IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'PostHistory' 
Run Code Online (Sandbox Code Playgroud)

不适用于 sys 表

SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
       , IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys.time_zone_info'
Run Code Online (Sandbox Code Playgroud)

我猜这些信息在另一个数据库的另一个表中,它们是什么?

我也尝试过sp_help 'sys.time_zone_info',并且得到了

对对象“sp_help”、数据库“mssqlsystemresource”、架构“sys”的 EXECUTE 权限被拒绝。

sql-server t-sql system-tables

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

使用服务器角色向所有数据库授予权限

我知道这个问题已经被问过很多次了,但他们都 3 岁以上了,所以我想再问一次,碰碰运气。

我需要向 MSSQL 服务器上的所有数据库授予读取权限。我想使用服务器角色来实现这一点。

我已经创建了具有以下权限的服务器角色

CREATE SERVER ROLE ReadOnlyAccess 
GO
GRANT VIEW ANY DEFINITION TO ReadOnlyAccess
Go
GRANT VIEW ANY DATABASE TO ReadOnlyAccess
GO
GRANT VIEW SERVER STATE TO ReadOnlyAccess
GO
GRANT CONNECT SQL TO ReadOnlyAccess;
GO
Run Code Online (Sandbox Code Playgroud)

将用户分配给此角色允许我连接到服务器但不扩展任何数据库。我认为“授予查看任何数据库”将是赋予这些权利的权利,但我错了......

有没有一种方法可以实现此目的,而无需在每个数据库上为用户授予 db_datareader 数据库角色?新的数据库不断被创建,因此手动执行此操作将是一场噩梦。我猜想创建一个每隔几个小时运行一次的作业就可以解决问题,但我仍然宁愿通过服务器角色来完成它。

有任何想法吗?我使用的是 SQL 2016 及更高版本。

sql-server permissions sql-server-2016

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

如何在 SQL Server 中启用故障转移电子邮件通知

我们在高可用性组中有一些服务器,需要为服务器上发生的任何故障转移配置电子邮件通知。

sql-server availability-groups

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

即使“执行后忽略结果”,什么也会导致 SELECT 语句执行延迟和高 ASYNC_NETWORK_IO

我们的 SQL Server 面临性能问题。

7 台服务器,都运行相同的应用程序,都存在相同的问题。

SELECT @@VERSION
Microsoft SQL Server 2017 (RTM-CU19) (KB4535007) - 14.0.3281.6 (X64)   Jan 23 2020 21:00:04   Copyright (C) 2017 Microsoft Corporation  Standard Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: ) (Hypervisor) 
Run Code Online (Sandbox Code Playgroud)

当您查看累积的服务器总等待统计信息时,会显示 99% ASYNC_NETWORK_IO。我们首先假设这是由应用程序引起的。然而:

当我们获取查询(从应用程序捕获)并从 SSMS 中将其作为测试运行时,执行后忽略结果。当我们通过 TCP 连接运行它时,大约需要 6 秒,通过命名管道连接运行它大约需要 50 秒。我们得到的结果非常慢。

(不考虑执行后的结果,查询给出的结果为 57k 行 227 列,大小为 221MB。)

它是核心版本,因此我们无法使用本地连接。我们测试了使用 TCP 和命名管道进行远程连接。

通过 TCP

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time …
Run Code Online (Sandbox Code Playgroud)

sql-server waits sql-server-2017 query-performance

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

两个备份程序,差异和注销同步

我正在 SQL Server 2017 上运行加密备份。

进行测试恢复,失败:

RESTORE DATABASE [test] 
FROM DISK = N'\\DPH-DD-SLI-001\SLI_SQL_Backups\Encrypted\DPH-SQL-SLI-12P\BTBLEAD\FULL\DPH-SQL-SLI-12P_BTBLEAD_FULL_20201021_185145.bak' 
WITH NORECOVERY, REPLACE; 

RESTORE DATABASE [test] 
FROM DISK = N'\\DPH-DD-SLI-001\SLI_SQL_Backups\Encrypted\DPH-SQL-SLI-12P\BTBLEAD\DIFF\DPH-SQL-SLI-12P_BTBLEAD_DIFF_20201022_071002.bak' 
WITH NORECOVERY; 
Run Code Online (Sandbox Code Playgroud)
Processed 199264 pages for database 'test', file 'BTBLEAD_Data' on file 1.
Processed 2 pages for database 'test', file 'BTBLEAD_Log' on file 1.
RESTORE DATABASE successfully processed 199266 pages in 446.348 seconds (3.487 MB/sec).
Msg 3136, Level 16, State 1, Line 6 This differential backup cannot be restored
because the database has not been restored to …
Run Code Online (Sandbox Code Playgroud)

sql-server backup sql-server-2017

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

如何处理SQL Server全文日志文件?

我们使用 SQL Server 全文搜索功能。因此,我们在 sql server 错误日志文件夹中拥有大量全文日志文件,例如 SQLFT0003200286.LOG.5。我们可以采取什么措施来确保定期清除这些文件(首先清除最旧的文件)?

sql-server full-text-search sql-server-2014

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

如何诊断 MSSQL 高 CPU 峰值

我的服务器 CPU 在大约 20 分钟内飙升至 100%。数据库在某些部分部分无响应。(我知道这一点是因为用户抱怨他们无法使用某些功能,但他们可以登录并使用其他区域,只是不具体)。在我检查当前查询之前它就消失了。我想看看是什么原因造成的。有人对此有某种指示吗?我如何真正找到造成这种情况的根本原因。如何查看是什么查询导致了这个?我正在使用 MSSQL

编辑:我在 RING BUFFER LOGS 中找到了记录 id 和 CPU 峰值的时间。这能让我找到问题的根源吗?

sql-server

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