我正在为非常大的数据库实施 Paul Randal 的手动传播 DBCC CHECKDB的方法,该方法基本上包括:
有人用过这个技术吗?有没有现有的脚本?
我担心这实际上可能无法涵盖 CHECKDB 所做的一切;CHECKDB 的联机丛书文档说,除了 CHECKALLOC、CHECKCATALOG 和 CHECKTABLE,它还:
所以这里是我的问题:
这些额外的检查是否必要/重要?(我可能更关心索引视图,我认为我们还没有使用 Service Broker 或 FILESTREAM。)
如果是这样,是否有单独执行这些额外检查的方法?
CHECKALLOC 和 CHECKCATALOG 似乎运行得非常快,即使在大型数据库上也是如此。有什么理由不每天运行这些?
(注意:这将是数百台服务器上数千个现有数据库的标准例程,或者至少是特定大小的每个数据库的标准例程。这意味着像重组所有数据库以使用 CHECKFILEGROUP 这样的选项对我们来说并不实用。)
(幸运的是,我们目前并未处于这种情况,只是提前计划,看看如果发生这种情况,我们的选择是什么。)
对于使用透明日期加密 (TDE) 加密的数据库,除非您有用于加密它的证书的备份,否则数据库备份的副本是不可恢复的。
如果你没有那个怎么办?还有其他选择吗?
如果整个服务器发生故障,在新硬件上恢复 MASTER 数据库的备份是否也会恢复证书?
sql-server encryption transparent-data-encryption disaster-recovery
我发现有关如何准确格式化 SPN(服务原则名称)以获得正确的 Kerberos 连接以及每个 SQL 实例需要多少个的矛盾信息。
此 2017 年 MS 文档包含以下内容:
从 SQL Server 2008 开始,SPN 格式已更改,以支持 TCP/IP、命名管道和共享内存上的 Kerberos 身份验证。命名实例和默认实例支持的 SPN 格式如下。
- 命名实例:
MSSQLSvc/FQDN:[port|instancename]- 默认实例:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN新的 SPN 格式不需要端口号。这意味着多端口服务器或不使用端口号的协议可以使用 Kerberos 身份验证。
我认为最后一段的意思是我只需要一个条目,以下之一:
MSSQLSvc/sqlbox1.mydomain.org/instance2MSSQLSvc/sqlbox1.mydomain.org这似乎与这个较旧的 (2011) MS 文档相矛盾,不仅是关于端口号,还关于使用什么名称:
要创建 SPN,您可以使用 SQL Server 的 NetBIOS 名称或完全限定域名 (FQDN)。但是,您必须为 NetBIOS 名称和 FQDN 创建一个 SPN。
当我查看环境中已经存在的 SPN 时,我看到了各种各样的组合,有些服务器最多有 4 个条目:
MSSQLSvc/sqlbox1MSSQLSvc/sqlbox1:1433MSSQLSvc/sqlbox1.mydomain.orgMSSQLSvc/sqlbox1.mydomain.org:1433甚至MS 自己的 Kerberos 配置管理器似乎也想生成最后两个版本(使用适当的混淆处理):
同样,对于现有的命名实例,我看到了一个奇怪的组合,其中一些几乎肯定是无效的:
MSSQLSvc/sqlbox1:1522MSSQLSvc/sqlbox1:instance2MSSQLSvc/sqlbox1.mydomain.org:1522MSSQLSvc/sqlbox1.mydomain.org:instance2MSSQLSvc/sqlbox1.mydomain.org/instance2 …如果“备用文件”丢失,有没有办法从备用/只读模式恢复 SQL 数据库?
(我看到一些参考文献在日志传送场景中将其称为 TUF 文件,但在我的情况下,它只是手动还原,备用文件具有 BAK 扩展名。)
执行“RESTORE DATABASE foo WITH RECOVERY”会导致致命错误:
During startup of warm standby database 'foo', its standby file
('path\filename.bak') was inaccessible to the RESTORE statement.
The operating system error was '5(Access is denied.)'. Diagnose the
operating system error, correct the problem, and retry startup.
Run Code Online (Sandbox Code Playgroud)
恢复是前一段时间完成的,不幸的是备用文件在备份文件夹中,并被我们的文件夹清理程序删除了。任何其他媒体上都不存在该文件的副本。用于恢复到这一点的原始备份也早已不复存在。
幸运的是,这对我们来说没什么大不了的(这是一个临时恢复),但是除了“不要删除该文件”之外,我找不到关于这个问题的任何其他有用的参考资料。
如果归根结底,我想我可以编写整个数据库的脚本,或者使用 SSIS 将所有对象复制到新的数据库容器中,因为我面前有一个 db 的只读副本。
有什么办法可以解决这个问题?我当然不希望我能够将它翻转回“恢复”并继续进行后续的恢复或任何事情,我只想在当前状态下将其强制进入正常的在线模式,以便我可以做到诸如更改权限、更改恢复模式或进行新的完整备份之类的事情。
我一直认为更高的补丁编号必然是较晚的版本,但现在我不太确定。
查看 SQL Server 2008 R2 SP3的SQL Server 内部版本列表,有两种可能的方法来应用安全更新 MS15-058,一种标记为“GDR”,另一种标记为“QFE”。
这些有什么区别?
根据这篇博客文章,GDR(通用发行版)是我们都应该安装的版本,而 QFE 是“仅当您遇到此特定问题时”的发行版,或者类似的版本?
如果我不需要 TLS1.2 支持,我应该应用 10.50.6220 补丁吗?还是 10.50.6529 补丁?
我在 SQL 2008 上设置了事务复制,并且有问题的文章将“复制非聚集索引”设置为 TRUE。
如果我在发布者上添加一个非聚集索引(使用 CREATE INDEX),它会立即推送给订阅者吗?
还是我需要运行快照?
所以我正在研究一个代码高尔夫拼图,需要在保持当前顺序的同时向结果添加一个 INT“数字”列n。
假设我的源数据是:
SELECT value
FROM STRING_SPLIT('one,two,three,four,five', ',')
Run Code Online (Sandbox Code Playgroud)
它以原始(所需)顺序返回项目:
value
-----
one
two
three
four
five
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用ROW_NUMBER()或RANK()我被迫指定一个ORDER BY,这value是唯一合法的选择:
SELECT value, n = ROW_NUMBER() OVER(ORDER BY value)
FROM STRING_SPLIT('one,two,three,four,five',',')
Run Code Online (Sandbox Code Playgroud)
但这(如预期)按value字母顺序排序,而不是按所需的原始顺序排列:
value n
------ ---
five 1
four 2
one 3
three 4
two 5
Run Code Online (Sandbox Code Playgroud)
连接到数字表不起作用,因为如果没有WHERE子句,我将获得完整的外部连接。
我能想到的最好的方法是使用带有标识字段的临时表:
CREATE TABLE #argg (n INT IDENTITY(1,1), v VARCHAR(99))
INSERT #argg
SELECT value v
FROM STRING_SPLIT('one,two,three,four,five',',')
SELECT *
FROM #argg …Run Code Online (Sandbox Code Playgroud) 我遇到的症状与这篇 2015 MSSSQLTips 文章中描述的非常相似:
SQL Server Reporting Services (SSRS) 与 Internet Explorer 11 不兼容
您已升级到 Internet Explorer 11,现在当您预览 SQL Server Reporting Services (SSRS) 报告时,您发现打印命令在报告查看器中不可见。此外,有时当您更改参数值时,IE11 会停止响应或加载报告需要很长时间。您可能还会发现使用 IE11 查看时,显示报表控件和导出功能的工具栏出现在多行中。当您在 Chrome 或 Mozilla Firefox 中预览相同的 SSRS 报告时,它运行良好,没有任何问题,这意味着这是浏览器兼容性问题。如何使 SQL Server Reporting Services (SSRS) 与 IE11 兼容?
我能找到的关于这个问题的几乎所有讨论都参考了这篇文章(或现在不可用的 MS Connect 页面)。
问题是为 SSRS 2008 建议的服务器端修复不适用于 SSRS 2017(文件中没有<meta http-equiv="X-UA-Compatible" content="IE=5">标签ReportServer\Pages\reportviewer.aspx)。
SSRS 2017 是否有等效的服务器端修复程序?我应该将此meta标记添加到此文件还是其他 ASPX 文件?
其他帖子建议升级 SSRS,就像这个关于 SSRS 2012 的问题,但我已经在 SSRS 2017 (14.0.600.689) 的倒数第二个版本上,并且最近补丁的更改日志似乎不包含任何相关的修复。 …
因此,理想情况下,您希望适当地预先调整 TempDB 数据和日志文件的大小,以便这不是问题,但有时流氓开发人员会在工作时间内在生产服务器上运行疯狂的大型查询,从而导致 TempDB 数据文件爆炸巨大的。
如果 TempDB 确实是驱动器上唯一的东西,那么我可能就这样保留它,但在某些服务器上,我有几个 SQL 实例,它们都共享同一个 TempDB 驱动器。
那么如何在不重启实例的情况下缩小这些 TempDB 数据文件呢?
我通常会尝试:
DBCC SHRINKFILE (name = 'tempdev', size = 5000)
Run Code Online (Sandbox Code Playgroud)
这在 SQL 2000 和 2005 中相当一致地工作(假设实际的 tempdb 活动已经逐渐减少),但在 2008 年似乎不经常工作(在我当前的服务器上,它只适用于 4 个数据文件中的 1 个,其他人继续保留大 2-3 倍)。
我的理解是所有备份都包含到备份操作完成的时间/点的数据。
管理 SQL 数据库基础结构 - 考试参考书 70-764说:
完整:这包含数据库的全部内容以及在备份操作期间对数据库所做的任何更改。因此,完整备份表示备份操作完成时的数据库。
(强调我的)
然而,对于差异备份,本书暗示了一些不同的东西:
差异:这仅包含上次完整数据库备份与执行差异备份操作的时间点之间的差异。
这样对吗?或者这只是不精确的语言?这里的“执行”是指差异备份开始或完成的时间吗?
对于其他备份类型(日志、部分、文件备份),本书并没有完全说明这一点?
sql-server ×7
backup ×1
dbcc-checkdb ×1
encryption ×1
kerberos ×1
order-by ×1
patching ×1
recovery ×1
replication ×1
shrink ×1
spn ×1
ssrs ×1
ssrs-2017 ×1
standby ×1
tempdb ×1
tls-1.2 ×1
transparent-data-encryption ×1
vldb ×1