我们使用Quest Spotlight进行数据库服务器监控。根据 SQL Server 决定自动故障转移的时间,如果该服务器在超过 72 小时内未成为主要服务器,我们将收到一条警报,指出数据库在超过三天(出厂默认设置)内未备份。
我怀疑 SQL Server 不会复制这些数据,但我想听听社区的意见,因为快速的 Google 搜索没有提供任何信息。另外,我正在旅行,没有时间进行测试,我需要提供相当即时的响应。
我们使用Quest Spotlight进行数据库服务器监控。根据 SQL Server 决定自动故障转移的时间,如果该服务器在超过 72 小时内未成为主要服务器,我们将收到一条警报,指出数据库在超过三天(出厂默认设置)内未备份。
我怀疑 SQL Server 不会复制这些数据,但我想听听社区的意见,因为快速的 Google 搜索没有提供任何信息。另外,我正在旅行,没有时间进行测试,我需要提供相当即时的响应。
我正在寻找一种简单或可管理的方式来读取 XML 文件,特别是 SQL Server 死锁的 XML 输出。我有一些服务器由于各种原因没有被监控。
我在 interwebz 上找到了以下代码,但它的输出只是 XML。
CREATE TABLE #errorlog (
LogDate DATETIME
, ProcessInfo VARCHAR(100)
, [Text] VARCHAR(MAX)
);
DECLARE @tag VARCHAR (MAX) , @path VARCHAR(MAX);
INSERT INTO #errorlog EXEC sp_readerrorlog;
SELECT @tag = text
FROM #errorlog
WHERE [Text] LIKE 'Logging%MSSQL\Log%';
DROP TABLE #errorlog;
SET @path = SUBSTRING(@tag, 38, CHARINDEX('MSSQL\Log', @tag) - 29);
SELECT
CONVERT(xml, event_data).query('/event/data/value/child::*') AS DeadlockReport,
CONVERT(xml, event_data).value('(event[@name="xml_deadlock_report"]/@timestamp)[1]', 'datetime')
AS Execution_Time
FROM sys.fn_xe_file_target_read_file(@path + '\system_health*.xel', NULL, NULL, NULL)
WHERE OBJECT_NAME like 'xml_deadlock_report';
有没有办法从这个 T-SQL 代码中获取原始 XML 输出并将其显示为死锁图或更易于阅读的文本?
我有几个数据库,前端应用程序在其中管理某些维护任务。在这个特定的例子中,我每晚都在运行 INDEX OPTIMIZE 作业,并且它经常与应用程序发生冲突并失败。
以下是我收到的错误:
Msg 50000, Level 16, State 1, Server MyTestServer01, Procedure CommandExecute, Line 152
Msg 2550, The index "clidx_StatisticalInterface_dPollTime" (partition 1) on table "StatisticalInterface" cannot be reorganized because it is being reorganized by another process.
我知道有时供应商宁愿他们的内置解决方案管理维护。我确信我可以在应用程序中找到该功能并将其关闭,但这个问题是我做不到的。
我将如何配置或编辑此作业以忽略同一实例中的特定数据库或数据库列表?
我已经在 dba.se 和网上的其他地方搜索了论坛,但没有找到具体的答案。我知道这个问题看起来与许多问题相似,但我发现的问题仅涉及如何缩小日志文件,我已经知道如何执行。
我碰巧处于那些需要收缩原木的独特位置之一。
我的具体问题是:
当我在镜像集中的主服务器上执行日志收缩时,我是否会进行故障转移并在“新”主服务器上执行日志收缩?
或者这是否以某种方式将更改复制到辅助服务器,从而无需手动进行故障转移?
为了节省时间和金钱(许可证)。
例如:
我们有一个镜像的 SharePoint 后端和一个镜像的 Lync SQL 后端。
我想将 Lync 服务器的见证同时用作 SharePoint 镜像对的见证。
或者我必须打破镜像,恢复数据库,然后重建镜像?
我们正在升级我们的 SharePoint 服务器。我们已经有两台新服务器,它们目前已镜像。如果可能的话,我想让服务器保持镜像状态,以节省维护时间。
我们创建了一个仅用于报告的 SQL 登录帐户 (SSRS),我们将其称为“ MyReportAcct ”。
我们已经使用这个帐户一段时间了,它是为每个新安装的实例创建的。除了在几个镜像实例上之外,它一直在按您的预期工作。我在我的环境中的任何独立实例上都没有看到这个问题。
根据我们的变更管理、Windows 日志和 SQL 错误日志的内部流程,报告将随机停止工作并且没有任何更改。以下是我们收到的两条错误消息:
在调查该帐户后,它会显示在 SSMS 的安全对象文件夹下。此外,我们发现该帐户与帐户属性的用户映射下的所有数据库相关联。我已经验证了 ' MyReportAcct ' 有public
and db_datareader
,所以表面上看起来都符合预期。
当我尝试更改帐户或删除映射时,问题就来了。我遇到了:
为了解决这个问题,我必须做的是删除服务器上“ MyReportAcct ”的每个实例,然后重新创建它,然后添加到每个数据库中。这不会一直发生,但经常会让人恼火。此外,我们根本不应该这样做。
我认为我们应该在每个实例中将此帐户更改为 Windows 帐户,而不是本地 SQL 登录。我觉得这可能会解决问题,但我需要证明原因或提供合理的答案。我认为部分问题在于以某种方式进行镜像,但我也不知道如何证明这一点。
安全性是我的一个弱点,我正在采取措施来改变这一点,因此您可以提供的任何见解将不胜感激。如果您需要更多信息,请告诉我。
我已经在两台服务器之间设置了日志传送(它们曾经是镜像的)。
在主数据库和辅助数据库之间镜像系统数据库的最简单或最有效的方法是什么?
此外,有谁知道 TSQL 脚本或(免费)程序可以编写来自主服务器的所有登录脚本?
可以用镜像升级SSRS吗?
例如,我已经从 SQL 2005 升级到带有镜像的 SQL 2014。
SSRS 运行在与我的数据库服务器相同的机器上。我将从 SQL 2012 (11.0.5343) 升级到 2014 SP1。
我希望从社区获得信息,以最简单的方式进行升级,但要注意任何可能的注意事项。
我在周末收到了来自我的一个数据库服务器的警报,这有点令人不安。维护计划中的每个数据库都有一个警报。
A full backup has never been taken for database *SeanDatabase*
多年来,我一直在制定维护计划,并且一直没有失败,相关日志也支持这一说法。此外,备份带有时间戳并位于预期的位置。
我在测试环境中进行了恢复,并运行了一致性检查,没有出现任何错误。
考虑到上述证据,我不确定我是否真的认为这是一个真正的错误或值得关注的原因。那么,也许这只是一个异常事件?无论哪种方式,我都想四处闲逛,安抚我的情绪。
有没有人遇到过这种情况?如果是这样,你做了什么调查?
昨晚我们遇到了硬件故障,我们的服务器启动并运行了。登录 SSMS 后,我发现所有镜像数据库都处于断开连接状态。我用 google-fu 做了一些搜索,但没有找到我需要的东西。
谁能指出我正确的方向?
编辑#1
我打破了镜子并试图通过向导重新配置它。一旦我“完成”它看起来像是要工作,然后它失败并出现以下错误:
服务器网络地址“TCP://SeanServer00.DBA.com:5022”无法访问或不存在。检查网络地址名称以及本地和远程端点的端口是否正常运行。(微软 SQL 服务器,错误:1418)
我已经在我所有的数据库服务器上设置了警报,每隔一段时间我就会收到以下错误,有时它会不断出现,有时会出现几次。
The SQL Server performance counter 'Log Growths' (instance '_Total') of object 'SQLServer:Databases' now equals the threshold of 1.00.
我可以更改任何配置来阻止这种情况吗?它似乎只来自两台服务器。
我们正在尝试实施的灾难恢复技术遇到了一个奇怪的问题。两个数据中心的环境相同,具有相同版本的 VMWare 和 Dell Equallogic SAN。
当我们从一个数据中心复制到另一个数据中心时,随机数据库会以某种方式损坏并最终进入可疑模式。每次我们尝试这种方法时,不同的数据库都会被破坏。这是导致此问题的 SQL 行为吗?这是 SAN 中用于复制的软件导致了这些错误吗?
我已经能够将数据库的状态更改为紧急模式并执行 DBCC CHECKDB,但每次都是不同的问题和数据库。我发现的一些错误是索引问题和数据不匹配问题。我仍在检查其他数据库以查看是否可以找到模式。如果找到其他东西,我一定会发布它是否有帮助。
我听说有人成功地实施了这个程序,这是项目中最后一项任务,在我们可以关闭项目章程之前要弄清楚。
我真的希望我们可以只使用 SQL Server 的内置功能,如镜像或 AO-AG。
SQL 的版本是 2008 R2 和 2012。我们正在安装一些全新的 SQL 2014 服务器。此外,它们都是标准版,而不是企业版。
任何输入或我可以尝试的事情都会有很大帮助,在此先感谢!
Edit#1 8/6/15 12:50 PM CST - 以下是我在 Windows 事件查看器中发现的一些错误消息,这些消息或多或少是 DBCC CHECKDB 产生的。
- EventID 605 - 尝试获取数据库 26 中的逻辑页 (1:22620) 失败。属于分配单元72057594239385600不属于72057594249412608
- EventID 824 - SQL Server 检测到基于逻辑一致性的 I/O 错误:不正确的分页(预期 1:1230;实际 0:0)。它发生在读取文件“D:\Mydatabase.mdf”中数据库 ID 58 中偏移量 0x0000000099c000 处的页面 (1:1230) 期间。SQL Server 错误日志或系统事件日志中的其他消息可能会提供更多详细信息。这是威胁数据库完整性的严重错误情况,必须立即更正。完成完整的数据库一致性检查 (DBCC CHECKDB)。
- EventID 7886 - 向客户端发送数据时,对大型对象的读取操作失败。一个常见的原因是应用程序运行在 READ UNCOMMITTED 隔离级别。此连接将终止。
- 事件 ID 608 - 在数据库 23 中找不到分区 ID 72057594383564800 的目录条目。元数据不一致。运行 DBCC CHECKDB 检查元数据是否损坏。
Edit#2 8/6/15 2:24 PM CST - 收到的信息表明,在 SUSPECT 模式下恢复数据库的 .bak 文件可以解决问题。
我最近审计了一个 SharePoint 服务器,发现了一些违反最佳实践的配置。
我希望有比在 100 多个数据库上右键单击并手动更改这些设置更好更快的方法。
例如,所有数据库都设置为自动增长 10MB,日志文件设置为自动增长 1%。我希望这些是固定数字而不是百分比。
任何资源或建议将不胜感激!
我正在为70-462考试建立实验室。在正文的第 49 页,它提供了在 Windows Server Core 上安装 SQL 2012 的命令:
Setup.exe /qs /Action=install /Features=SQLEngine,IS,Conn
/InstanceName=MSSQLServer /SQLSYSADMINACCOUNTS="Contoso\kim_akers"
/IAcceptSQLServerLicenseTerms
当我运行此代码时,似乎一切运行良好,GUI 窗口出现并显示进度,然后突然退出,GUI 消失,然后在 CLI 中留下以下内容:
The following error occurred:
Object reference not set to an instance of an object.
Error restult: -2147467261
Result facitlity code: 0
Result error code: 16387
Please review the summary.txt log for further details
我做了一些搜索,但没有想出太多。此外,我不知道如何访问这个“summary.txt”文件,因为它在 C:\ 驱动器上的任何地方都找不到,所以我看不到文件在说明什么。
其他详情:
如果还需要什么,请告诉我。
编辑 #1 5-10-15 下午 1:15 CST
当我在 Shanky 建议的文件夹中执行 dir 命令时,我得到:
以下是我在网上找到的一个脚本,其中包含我在结果集中想要的大部分元素。唯一缺少的是如何获得一个确定时间段内的平均运行时间,例如一周、10 天、23 天、一个月等。
我已经进行了一些搜索,但是我尝试过的方法以某种方式失败了。此外,我的 TSQL 很弱,但我正在阅读 Itzik Ben-gan 的出版物来改变这个问题。我真的很感激任何人可以提供的任何帮助。
select job_name, run_datetime, run_duration
from
(
select job_name, run_datetime,
SUBSTRING(run_duration, 1, 2) + ':' + SUBSTRING(run_duration, 3, 2) + ':' +
SUBSTRING(run_duration, 5, 2) AS run_duration
from
(
select DISTINCT
j.name as job_name,
run_datetime = CONVERT(DATETIME, RTRIM(run_date)) +
(run_time * 9 + run_time % 10000 * 6 + run_time % 100 * 10) / 216e4,
run_duration = RIGHT('000000' + CONVERT(varchar(6), run_duration), 6)
from msdb..sysjobhistory h
inner join msdb..sysjobs j
on h.job_id = j.job_id
) t
) t
order by job_name, run_datetime
我有一些每日和每周的任务,我在其中运行脚本以获取所需的信息。运行此代码一次并访问所有服务器而无需分别登录每个服务器的方法是什么?
不确定这是否是误报问题,但我需要平息对此的好奇心。我收到以下错误消息:
错误:3041,严重性:16,状态:
1。BACKUP 未能完成命令 BACKUP DATABASE DBApp。检查备份应用程序日志以获取详细消息。
我经常收到这个错误,但这是最重要的,当我检查有问题的数据库的备份文件夹时,.trn & .bak 文件就在那里。因此,它似乎正在支持它,但说明它失败了。备份由维护计划执行,并在备份所有后续数据库时完成。
只要数据库列在备份文件夹中,有什么想法或者我应该从现在开始完全忽略这一点吗?
CLI 或 PowerShell 中是否有列出为 SQL 安装的组件的命令?我正在寻找类似功能列表的东西,您可以通过从 SQL Server 安装中心程序选项中的工具运行发现报告来获得。
我在 Windows Server 2008 R2 Enterprise 的 CORE 版本上运行 SQL Server 2012。我在网上搜索过,但没有发现任何有用的东西。
情况:我们最近有一家顾问公司在镜像设置中构建新的 Lync 2013 服务器。有两个安全原则集,SA(禁用)和仅与公共服务器角色关联的 AD 组。
设置: - 6 x Windows Server 2012 R2 Standard 64 位 - 4 x SQL Server 2012 Standard w/SP1 64 位 (11.0.3128) - - 2 x SQL Server Express 2012 64 位(Witness) - 所有服务器都是 VMware虚拟机
问题:- 是否有获得系统管理员访问权限的 Jedi 技巧,或者我必须联系我们的顾问吗?- 这是怎么发生的?我认为有某种故障保护措施可以防止这种情况发生。