标签: sql-server-2008

Sql Server 2008 R2:带有事务日志备份的简单恢复模型

我正忙于审查我的 SQL 维护计划,并且对数据库上的恢复模型选项感到有些困惑,特别是与时间点恢复相关。

这是我的场景:

  • 我有两个维护计划
    • 每小时进行一次事务日志备份的工具
    • 另一个每天进行完整备份(但首先在完整备份之前进行事务日志备份)
  • 所有数据库都设置为使用简单恢复模型。

这是我的问题

  • 看到恢复模式设置为 simple 并且 msdn 声明简单恢复模式不支持时间点恢复 - 这是否意味着我将无法在灾难中使用我的事务日志备份来恢复数据库到它发生前一个小时?
  • 应该先做哪个备份,数据库备份还是事务日志备份?

我正在忙着阅读的文章说我应该先备份数据库,然后备份事务日志,否则我会得到维护计划错误,但我目前先备份事务日志,然后备份数据数据库,但我没有得到任何错误。

我的最终解决方案(维护计划)
将所有数据库设置为使用 FULL 恢复模型。然后:
每小时维护计划:
- 检查足够的硬盘空间进行备份
- 进行事务日志备份
- 归档事务日志备份(压缩 .trn 文件)
- FTP 异地归档事务日志备份

每日维护计划:
- 检查足够的硬盘空间进行备份
- 执行完整的数据库备份,然后进行事务日志备份
- 存档备份(压缩 .bak 和 .trn 文件)
- 异地 FTP 备份

每周维护计划:
- 检查数据库完整性
- 重建索引
- 清理超过 4 周的历史记录
- 删除超过 4 周的.bak 和 .trn 文件
- 删除超过 4 周的存档备份(zip 文件)

如果任何任务失败,则会发送通知电子邮件。当每日和每周任务成功完成时,还会发送成功电子邮件。

测试维护计划的注意事项。我的第一个备份被 ms windows ftp.exe 没有正确配置为使用被动模式损坏。所以检查你的备份:)

sql-server-2008 sql-server backup

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

服务器所有者可以访问我的数据的深度是否有任何限制?

这是我关于 DBA 的第一篇文章。我想从你那里得到一些明确的想法。首先,这听起来像是讨论,但它不是辩论。我正在寻找的可能是“是的,他们可以为所欲为”或“不,不可能!”

最近我完成了一个web应用程序的开发。完成后,我被告知联系服务器区域部门,以便他们可以帮助我上传我的 SQL 数据库、授予权限等。

所以,我这样做了。他们解释了他们是如何工作的,我们同意上传一个非操作版本的数据库,所以我们可以测试权限等。他们告诉我为他们处理数据库的备份。他们会恢复它。第一件事就是在我心里制造噪音。我不应该是恢复备份的人吗?“嗯……我还不是 dba,我相信他们更清楚。” 是我对自己的回答,因为这些可能是他们的做法。

两天后,他们给我发了一封电子邮件,说备份已启动并提供了一些建议。他们需要对我的数据库表进行规范化并拥有正确的索引。

我的反应并不甜蜜。首先,我们都讨论过它,备份不是操作性的......那么,有任何相关结论吗?......顺便说一下,表格都完全规范化了。其次,他们可以进入那么深吗?如果我的数据库中包含的信息很关键怎么办?

非常感谢,希望对这个问题有一些见解。

sql-server-2008 sql-server

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

如何加入多台服务器的更新结果集

我有 4 个不同的服务器,我想在一个输出中获得所有这些服务器的可用磁盘空间。
使用 xp_fixeddrives 我们将获得每个驱动器中的可用空间。

不可能进入所有服务器并按上述方式检查它。所以我试图执行一次。

例如一台服务器的结果集如下

drive   free_mb
C       1816
D       2553
E       2882
F       6247
G       16936
H       7281
I       2395
Run Code Online (Sandbox Code Playgroud)

由于我是 sql 的初学者,请帮我解决这个问题。

sql-server-2008 sql-server

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

如何查找正在进行的查询的 IO 统计信息(按索引)

通过在运行 SQL 查询之前运行 SET STATISTICS IO ON,我可以了解查询完成后对每个索引执行的逻辑读取次数。

通过查看视图 sys.dm_exec_requests,我可以了解迄今为止针对任何正在进行的查询执行的逻辑读取数(总计)。

我怎样才能知道到目前为止对每个索引执行了多少逻辑读取以进行查询?

sql-server-2008 sql-server

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

无法启动 SQL Server Instance 2008 R2 - DB 文件已损坏

我无法启动 SQL Server 2008 R2 生产数据库实例。读取日志文件后的错误信息是

" 传递给数据库 'master' 中的日志扫描的日志扫描编号无效。此错误可能表示数据损坏或日志文件 (.ldf) 与数据文件 (.mdf) 不匹配。如果在复制期间发生此错误,重新创建出版物。”

在阅读了几篇文章后,我意识到我的 MASTER DB 文件已损坏。我遵循了以下设置

Copy the Master.mdf and Masterlog.ldf file from Template location to My Database Data folder.

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Templates to D:\MSSQL\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
Run Code Online (Sandbox Code Playgroud)

注意:当我复制所有 DB 文件(如 Master、MasterLog、MSDBData、MSDBlog、Model 和 ModelLog)时,会发生同样的错误

When i run my MSSQLSEVER instance different problem occur.
Run Code Online (Sandbox Code Playgroud)

在我的服务器中,我只有 C、D 驱动器我没有 E 驱动器。我如何在错误路径下覆盖这些。

错误日志

2012-10-24 02:51:12.79 spid5s Error: 17204, Severity: 16, State: 1.

2012-10-24 02:51:12.79 spid5s FCB::Open failed: Could not open file e:\sql10_main_t.obj.x86fre\sql\mkmastr\databases\objfre\i386\MSDBData.mdf for file …
Run Code Online (Sandbox Code Playgroud)

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

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

我能做些什么来加速这个 SQL 查询?

我在@Dems 的帮助下创建了这个 SQL 查询 :-)

这是一些细节,我试图制作一个 SQLFiddle,但我的变量一直出错......这在 Sql Server 2008 中有效......我的问题是,如何使我的查询更快?我知道我在这里做错了很多事情(重复嵌套查询),我希望让你们中的一位 SQL 专家来看看并帮助我从 30 分钟的执行时间内解决这个问题!:-S

我不确定您需要多少信息才能帮助我解决这个问题,请提出任何问题,我会尽快回复。抱歉,如果缺乏详细程度,我只是不知道您想要/需要知道什么!

查询背后的基本思想是,在游戏中,我想找到所有在一段时间内没有移动 5 个单位的玩家,他们在静止状态下开火并且在停止移动之前 60 分钟没有开火。查询有效,但AND NOT EXISTS在我补充说运行需要 16 秒之前,它的子句正在减慢速度!16 秒仍然是一个很长的时间,所以任何其他改进都会受到赞赏,但现在这是我自己的 POC 游戏(只是把零碎的东西放在一起),16 秒是可以接受的......

DECLARE @n INT , @DistanceLimit INT
SELECT  @n = 2 , @DistanceLimit = 5;

WITH    partitioned
          AS ( SELECT   * ,
                        CASE WHEN Distance < @DistanceLimit THEN 1
                             ELSE 0
                        END AS PartitionID
               FROM     EntityStateEvent
               WHERE    ExerciseID = '8B50D860-6C4E-11E1-8E70-0025648E65EC'
             ),
        sequenced
          AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server tuning if-not-exists query-performance

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

SQL Server 2008 由于错误 2601 无法将提交表刷新到 dbid 11 中的磁盘,因此无法备份

我尝试使用以下代码备份 SQL Server 2008 数据库:

BACKUP DATABASE [DataStore] TO  DISK ='E:\SQLServerDatabase\DataBasebackUpOct302012.bak'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

消息 2601,级别 14,状态 1,过程 sp_flush_commit_table,第 15 行无法在具有唯一索引“si_xdes_id”的对象“sys.syscommittab”中插入重复的键行。

消息 3013,级别 16,状态 1,第 1 行 BACKUP DATABASE 异常终止。该语句已终止。

消息 3999,级别 17,状态 1,第 1 行由于错误 2601,无法将提交表刷新到 dbid 11 中的磁盘。检查错误日志以获取更多信息。

有人可以建议解决这个问题吗?

版本是 Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Jul 9 2008 14:17:44 (64-bit) o​​n Windows NT 6.1 (Build 7600:)


回复以下评论:

亚伦伯特兰,谢谢。我将研究服务包并希望能够解决问题。

SQL学习者

以前从未使用过更改跟踪服务。但由于处理不当,我们的 Windows Server 意外关闭了 2-3 次。

看起来我必须应用服务包。

mrdenny

使用 DBCC CHECKDB 错误后的结果

Msg …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

SQL Server 2008 升级顾问工具

我们从 SQL Server 2000 升级到 SQL Server 2008。但是由于我们的医疗保健应用程序中的一些遗留脚本/查询仅在 2000 年运行,我们不得不在向后兼容模式下运行 2008 版。

我的问题是,如果我必须在潜在冲突/问题等方面将其打开到完全兼容模式,我需要注意什么。升级顾问工具在我的情况下是否仍然有用,因为我们已经升级但以向后兼容性运行模式。运行该工具是否有价值?

任何人都可以分享的任何其他信息都会很有用。

sql-server-2008 sql-server sql-server-2000

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

选择最新的数据(内连接+分组可能)

我想我需要一些帮助。为了简化我的问题,假设我有两个表。首先使用这种结构称为“主题”:

idTopic  author  deleted
1        123     false
2        132     false
Run Code Online (Sandbox Code Playgroud)

第二个称为“文本”,如下所示:

idTopic idText datePosted
1       11     1
1       12     2
2       15     1
2       18     3
Run Code Online (Sandbox Code Playgroud)

我需要的是使用该主题的最新文本数据为每个主题选择数据。所以我的输出应该是这样的:

idTopic author deleted idText datePosted
1       123    false   12     2
2       132    false   18     3
Run Code Online (Sandbox Code Playgroud)

那么我的 sql 查询应该如何显示?我试图对由 idTopic 分组的第二个表进行一些内部连接,但没有奏效。

谢谢

sql-server-2008

5
推荐指数
2
解决办法
2624
查看次数

为什么没有在死锁图中填充对象名和索引名?

我收到了一个请求,要求检查 2008 sp3 服务器(10.0.5500.0 - 企业版(64 位))上的一些错误,看看我是否能找到之前发生的死锁。

Traceflag 1222 未启用,服务器所有者也不想启用它。我使用了扩展事件并使用以下查询提取了一些信息:

    SELECT  CAST(event_data.value('(event/data/value)[1]',
                               'varchar(max)') AS XML) AS DeadlockGraph
FROM    ( SELECT    XEvent.query('.') AS event_data
          FROM      (    -- Cast the target_data to XML 
                      SELECT    CAST(target_data AS XML) AS TargetData
                      FROM      sys.dm_xe_session_targets st
                                JOIN sys.dm_xe_sessions s
                                 ON s.address = st.event_session_address
                      WHERE     name = 'system_health'
                                AND target_name = 'ring_buffer'
                    ) AS Data -- Split out the Event Nodes 
                    CROSS APPLY TargetData.nodes('RingBufferTarget/
                                     event[@name="xml_deadlock_report"]')
                    AS XEventData ( XEvent )
        ) AS tab ( event_data )
Run Code Online (Sandbox Code Playgroud)

我收到了很多信息,看起来像这样: …

sql-server-2008 sql-server deadlock

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