假设我们使用 SQL Server Management Studio 执行一个很长的删除查询。为了这个例子,假设它的执行时间是 10 小时。虽然它在进程 SSMS 崩溃中执行了几个小时。查询会发生什么?尽管 SSMS 不再运行,它会回滚还是继续执行?
当 SSMS 崩溃时,数据库恢复会终止,但我很想知道更改和删除会发生什么。
假设我们使用 SQL Server Management Studio 执行一个很长的删除查询。为了这个例子,假设它的执行时间是 10 小时。虽然它在进程 SSMS 崩溃中执行了几个小时。查询会发生什么?尽管 SSMS 不再运行,它会回滚还是继续执行?
当 SSMS 崩溃时,数据库恢复会终止,但我很想知道更改和删除会发生什么。
我们将 mdf 和 ldf 文件保存在物理机的单独驱动器上。构成 ldf 文件驱动器的其中一个磁盘出现故障。一些在该驱动器上有其 ldfs 的数据库现在处于“恢复挂起”状态。
它不是生产环境,所以一些数据丢失是可以接受的,但丢失整个数据库是不可接受的。目前从备份中恢复不是一个可行的选择。
我尝试过了:
1)分离数据库,但出现以下错误:
文件激活失败。物理文件名“D:\LDFfiles\DatabaseName.ldf”可能不正确。无法重建日志,因为数据库关闭时有打开的事务/用户,数据库没有发生检查点,或者数据库是只读的。如果事务日志文件因硬件或环境故障而被手动删除或丢失,则可能会发生此错误。
消息 5181,级别 16,状态 5,第 1 行无法重新启动数据库“DatabaseName”。恢复到以前的状态。
消息 5069,级别 16,状态 1,第 1 行 ALTER DATABASE 语句失败。
消息 823,级别 24,状态 2,第 1 行操作系统在读取文件“D:\LDFfiles\DatabaseName.ldf”中的偏移量 0000000000000000 时向 SQL Server 返回错误 2(系统找不到指定的文件。)。SQL Server 错误日志和系统事件日志中的其他消息可能会提供更多详细信息。这是威胁数据库完整性的严重系统级错误情况,必须立即更正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。
2)将它们联机,但出现以下错误:
你能告诉我恢复数据库的选择是什么吗?据我所知,mdf 文件是健康的,可以通过重建日志查询重复使用。主要问题是它目前是附加的。欢迎任何建议。
我总是在运行 SQL Server 服务的服务器上安装服务包。这次我面临的情况是,我必须为每个实例都停止服务的多实例 SQL Server 打补丁。在不破坏其中一个应用程序的情况下,不可能启动服务。它不是集群的一部分,只是一个常规的独立服务器。
我的问题:停止服务会影响SP的安装吗?
我需要将 db_owner 分配给实例中的所有用户。实例中有几百个登录和相同数量的数据库。我希望每个用户都能在该用户所在的数据库中获取 db_owner 。我知道如何为个人用户执行此操作,但我不知道如何同时为所有用户执行此操作。
我很清楚将 db_owner 提供给所有人并不是一个好主意,但是……我们正在安装一个非常具体的应用程序。每个想要使用此应用程序的用户都需要 db_owner。我们已经尝试过解决方法,但是应用程序本质上是相当原始的,所以在更改应用程序代码之前,我们将不得不容忍疯狂数量的 db_owners。无论如何,这个特定实例上没有敏感数据,所以我们得到了管理层的批准。
我最近继承了一个环境,其中有大约 4000 多个数据库,分布在 3 个大型物理服务器上的 21 个实例之间。数据库根据名称分布在不同的实例之间,因此有些实例比其他实例大几倍。所有数据库的模式都是相同的,但数据不是。一些数据库只有几 MB,而另一些则是 400+GB。
管理层正在考虑我们是否应该尝试在每个实例上保留尽可能多的数据库并减少大型实例。另一个想法是继续向现有环境添加小实例,甚至减少每个现有实例中的数据库数量并增加实例数量。
在管理方面,拥有更少的大实例可能比拥有许多小实例更容易。另一方面,如果大实例发生问题,那么它上面的所有数据库都会受到影响,因此拥有许多小实例可能更安全。
从性能的角度来看,什么会更好?我还应该考虑哪些其他因素?我应该在每个实例上保留多少个数据库?我知道这取决于,但你有一些粗略的估计吗?例如,一个实例上的 500 个数据库是否太多?如果您需要更多信息,请告诉我。
我忘了说所有这些数据库都是不同客户的生产数据库,所以它们都同样重要。开发、测试等在不同的服务器上。
我想分析数据库中一个大表的性能。它只有两种类型的操作。插入和读取。一旦输入数据,它永远不会更新。
我需要找出表格更新频率最低的时间(例如星期六下午 3 点到 6 点之间)。我还需要找出何时最不经常读取表格。
结构如下所示:
dbo.Table1
[Column1] [INT] IDENTITY(1,1) NOT NULL,
[Column2] [VARCHAR](50) NULL,
[Column3] [DATETIME] NULL CONSTRAINT
[Column4] [INT] NULL,
[column5] [VARCHAR](255) NULL,
[column6] [INT] NULL,
[column6] [VARCHAR](MAX) NULL,
[column7] [INT] NULL,
column1 上有聚集索引 1,column2 和 3 上有非聚集索引 2,包括 column1
我们使用:SQL Server 2012
我继承了一个非常有趣的环境,我的任务是尽快找到并实施高可用性/灾难恢复解决方案。
简单来说我们的环境是这样的:
服务器 1 - 生产数据库 (200GB)
服务器 2、3、4 - 需要每天恢复生产数据库的副本(必须每天更新一次生产数据)
Server 5——DR服务器(数据丢失尽量少,不超过5分钟)
我们用:
要求:
我们需要的解决方案:
需要尽可能少的维护工作(只有 1 个超级忙碌的 DBA 可用)
将使我们能够继续生成完整的、差异的和事务性的备份(我们需要它们供审计人员使用)
我已经考虑过的选项:
我考虑了一下,排除了以下方法:
1) 日志传送,因为我们需要能够向审计员显示日志备份并将其存储多年。如果我错了,请纠正我,但日志传送不允许我们创建单独的日志备份。
2) 镜像仅在 2 个服务器(主服务器和镜像服务器)之间工作,因此它不能解决必须每天刷新的额外服务器的问题。也许我只能在一台服务器上使用它,而在其他 3 台服务器上使用其他东西。
3)复制主要用于单个表和函数,所以恐怕无法将慢速服务器上的一个数据库复制到其他 4 个服务器。
4) 我从未使用过其他 HA 技术,例如 AlwaysOn 或集群对我来说是一个很大的未知数。只要有人指出正确的方向,我就很乐意学习。
如果您能建议可以在所描述的环境中实施的 HA/DR 解决方案,我将不胜感激。