小编Kin*_*hah的帖子

SQL Server 最小服务器内存

将 SQL 2008 R2 与 SP2 与具有 64 GB RAM 的服务器一起使用。考虑到 SQL Server 仅限于仅与数据库引擎相关的服务,我已将最大服务器内存设置为 58GB。我有一个关于设置最小服务器内存的问题

如果我将最小服务器内存设置为 48 GB 是否意味着

a) 如果 Windows 向 SQL 发送低内存通知——SQL 服务器将修剪其所有池并尝试将内存使用量保持到 48 GB 的内存?

b) 在 Windows 进行积极的工作集修整的情况下 - 是否会将 SQL 服务器的内存使用量保留为 48 GB,为 SQL 的内存使用量设置“下限”。

c) 对最小服务器内存有什么建议吗?

搜索网络——互联网上有大量关于最大服务器内存的信息,但我读到的地方很少(Brent Ozar 博客中的配置最佳实践)将最小服务器内存设置为服务器上可用 RAM 总量的 50%。

sql-server-2008 sql-server sql-server-2012

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

如何终止等待 IO_COMPLETION 的挂起 SQL Server 事务?

我们有一个事务已经运行了 5 个多小时。我们的磁盘空间不足。会话已被终止,但仍在等待 IO_COMPLETION。实际上wait_type 只是更改为PAGEIOLATCH_EX。如何终止挂起的 SQL Server 事务?我不担心丢失数据,因为所有数据都可以重新填充。

session_id: 54
STATUS: suspended
blocked by: 0
wait_type: PAGEIOLATCH_EX
Elapsed Time (in Sec): 19750.420000
open_transaction_count: 2
Run Code Online (Sandbox Code Playgroud)

transaction sql-server-2012 kill

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

查询以确定强制加密状态

我正在尝试确认当前是否设置了强制加密和/或当前连接是否安全。

是否有我可以运行的 SQL 查询来为我提供该信息,或者我是否需要登录机器并从操作系统查询它?

sql-server ssl

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

是否可以从事务日志(无 MDF)中恢复 SQL Server DB?

我们有一个 SQL Server 2005 服务器,其中包含大约 200 个低流量/无流量存档数据库,并且该服务器没有备份到任何其他设备。数据库文件(MDF 和 LDF)存储在 RAID 阵列上,当 RAID 控制器出现故障时,我们担心会丢失数据。我们将 RAID 控制器和阵列发送给数据恢复公司,他们能够恢复大部分文件,但在某些情况下,我们有事务日志,但缺少主要数据文件。

是否可以仅使用事务日志将数据库恢复到最后一个事务(应该是在创建数据库之后),或者这是无法完成的事情?

sql-server-2005 sql-server recovery restore transaction-log

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

意外 DBA:不确定为什么我的日志链已损坏?

首先,感谢您查看这个 - 我们的生产环境中有一个大型数据库(1.26 TB),其中有几百个损坏的页面并且已经完成了几个月,所以所有的损坏都是一样的可用的备份。

上周晚些时候,我被拖入了这个阶段,因为似乎由于损坏,重新组织索引的预定作业已经失败了一段时间,我们现在处于最大和最常用表上的索引范围在 50% 和80% 的碎片严重降低了应用程序的性能。

我对如何解决这种情况提出了许多想法(相信我,我对替代方案持开放态度),从我读到的内容来看,我认为以下内容听起来是个好主意:

  1. 从生产 (SQL Server 2008R2) 中获取损坏数据库的压缩备份,复制到我们的(本地)开发服务器 (SQL Server 2016) 并运行修复(生产系统上没有足够的空间来拥有两个副本损坏的数据库同时附加)。
  2. 将此损坏备份的两个副本恢复到我们有足够空间的开发服务器上。
  3. 使用这些数据库之一的 allow_data_loss 选项在开发服务器上运行修复,重命名为“DbNameHereRepaired”(我使用 DBCC PAGE 查看的大多数损坏页面似乎都将其数据全部设置为 0x00)。
  4. 将其他副本重命名为 DbNameHereCorrupt,尝试使用以下代码运行页面级还原:

        alter database DbNameHereCorrupt set single_user with rollback immediate
    
        --set db to FULL recovery mode
        alter database DbNameHereCorrupt set recovery full
    
        --Declare paths for backups
        declare @fullBackupPath nvarchar(max) = N'D:\Restore\DbNameHereCorrupt-FullBackup.bck'
        declare @tranLogBackupPath nvarchar(max) = N'D:\Restore\DbNameHereCorrupt-LogBackup.bck'
    
        --Take full backup to begin new TLogChain
        backup database DbNameHereCorrupt to disk = @fullBackupPath with init, differential;
    
        --Immediately …
    Run Code Online (Sandbox Code Playgroud)

sql-server recovery restore

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

如何更改@schedule_uid=N'????'的数量 重新创建 SQL Server 代理作业?

我在 SQL-Server 代理作业中有一个 SQL Server 2005 作业,我需要将其移动/转移到另一个更新的 SQL Server 2008 R2 实例。我能够编写脚本,然后将其用作升级后的开发人员中的新查询窗口。服务器,似乎(据我所知)我必须对此脚本进行的唯一更改是将其指向正确的服务器、文件路径并为其获取新的 @schedule_uid 编号,但不确定如何分配该编号.

  • 此作业是为 SSIS 包构建的(作为它在文件路径中的指向)

感谢您的任何建议

脚本代码为:

USE [msdb]
GO

/****** Object:  Job [eLFCopy]    Script Date: 12/19/2013 11:30:57 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 12/19/2013 11:30:57 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server ssis sql-server-2008-r2

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

将结果导出到 XML

我正在尝试从 SQL 查询创建 XML 文件。输出应如下图所示

在此处输入图片说明

标签BranchID再次出现的地方,SubParentBranchID好像有多个SubBranchIDBranchID. 在下图中,BranchID94 有两个SubBranchID63 和 64。

我管理了这个 SQL 查询

SELECT
a.[heading_id] as BranchID,
c.[name] as BranchName,
a.[business_id] as SubBranchID, 
a.[heading_id] as SubParentBranchID,
b.[name] as SubBranchName
   FROM [BUSINESSHEADINGLINK] as a
   join [BUSINESS] as b on a.business_id = b.business_id
   join [HEADING] as c on   a.heading_id = c.heading_id 
FOR XML PATH ('Branch'), ROOT('BranchInfo')
Run Code Online (Sandbox Code Playgroud)

这给了我以下 XML

在此处输入图片说明

在这里你可以看到我既没有标签<SubBranches>也没有<SubBranch>. 我也没有<SubParentBranchID>。XML 文件应如下所示:

在此处输入图片说明

任何人都可以帮助我使用 SQL 代码吗? …

xml sql-server t-sql

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

SQL Server 全文索引可以处理多少数据?

我意识到这个问题很模糊,这取决于硬件和我们的需求。

我们目前有 500 万行数据,总共有 5GB 的数据,我们希望使用全文索引对其进行索引。我们的数据增长非常快,假设几年后它会接近 10 亿行和 1 TB 数据并不是没有道理的。

该索引可供网站用户搜索,他们希望在一两秒钟内得到响应。

假设该数据集可使用 SQL Server 2012 全文索引编制索引是否合理?对如此大量的数据进行全文索引是否常见?有没有关于这个主题的好读物,例如来自其他人的经验?

performance full-text-search sql-server-2012

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

在维护计划期间删除其他文件

我有一个 SQL Server 2012 维护计划,它执行正常的操作(重建索引和更新统计信息、备份数据库、删除超过 X 天的 .bak 文件等)。除了一项维护清理任务外,一切正常:

维护清理任务截图

应该是删除所有意外留在每晚备份目录中的 .7z 档案(相当于 .zip 或 .rar)(尽管我们尽了最大努力,但最终还是有些人将这些文件留在服务器上......),但是E:\Backups\foo\bar.7z在维护计划运行后,子目录(例如)中仍然存在旧的 .7z 文件。

SQL Server 日志中没有错误。

我怀疑这是因为“删除以下类型的文件:备份文件”选项限制了可以删除的文件类型。我还尝试使用 7z 扩展名将其更改为“维护计划文本报告”,但没有任何更改。

是否可以让维护计划在维护清理任务期间删除任意(非 SQL Server)文件?如果是这样,知道我做错了什么吗?

backup sql-server-2012 maintenance-plans

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

SQL Server:如果查询被取消,从哪里获取数据?

假设我正在使用 跟踪查询sys.dm_exec_query_stats,如果查询顺利结束,那么我们可以在 中找到相关统计信息sys.dm_exec_query_stats。但是,如果取消查询,则该查询的统计信息(即在被用户取消之前执行了多长时间、其 I/O 使用情况等)在sys.dm_exec_query_stats.

还有其他地方可以获取此信息吗?

sql-server dmv

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