AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-25146

Kris Gruttemeyer's questions

Martin Hope
Kris Gruttemeyer
Asked: 2018-05-09 10:22:01 +0800 CST

预暂存数据导致执行计划成本飙升

  • 5

我有一个我们正在尝试调整的麻烦查询。我们最初的想法之一是获取较大执行计划的一部分并将这些结果存储到中间临时表中,然后执行其他操作。

我观察到的是,当我们将数据预存到临时表中时,执行计划成本会飙升 (22 -> 1.1k)。现在,这具有允许计划并行执行的好处,这将执行时间减少了 20%,但在我们的案例中,每次执行的 CPU 使用率更高,这并不值得。

我们正在使用带有旧版 CE 的 SQL Server 2016 SP2。

原计划(成本~20):

低成本计划

https://www.brentozar.com/pastetheplan/?id=ry-QGnkCM

原始 SQL:

WITH Object1(Column1, Column2, Column3, Column4, Column5, Column6)
AS
(
    SELECT  Object2.Column1, 
            Object2.Column2, 
            Object3.Column3, 
            Object3.Column4, 
            Object3.Column5, 
            Object3.Column6
    FROM Object4 AS Object5
    INNER JOIN Object6 AS Object2 ON Object2.Column2 = Object5.Column2 AND Object2.Column7 = 0
    INNER JOIN Object7 AS Object8 ON Object8.Column8 = Object2.Column9 AND Object8.Column7 = 0
    INNER JOIN Object9 AS Object3 ON Object3.Column10 = Object8.Column11 AND Object3.Column7 = 0
    INNER JOIN Object10 AS Object11 ON Object2.Column1 = Object11.Column1
    WHERE   Object8.Column12 IS NULL AND
            Object8.Column13 = Object5.Column13 AND 
            Object3.Column3 = Object5.Column3 AND 
            Object11.Column14 = Variable1
)
insert Object12
SELECT  Object13.Column2,
        Object13.Column3,
        MIN(Object13.Column4) AS Column15,
        MAX(Object13.Column4) AS Column16,
        COUNT(DISTINCT (CASE WHEN Object13.Column5 = 1 THEN Object13.Column1 END)) AS Column17,
        COUNT(DISTINCT (CASE WHEN Object13.Column6 = 0 THEN Object13.Column1 END)) AS Column18,
        COUNT(DISTINCT Object13.Column1) AS Column19
FROM Object1 AS Object13
GROUP BY Object13.Column2, Object13.Column3 OPTION (RECOMPILE) 

新计划(上面以蓝色突出显示的区域已预先安排到临时表中 - 成本约为 1.1k):

在此处输入图像描述

https://www.brentozar.com/pastetheplan/?id=rycqG3JRf

新的 SQL:

SELECT  Object1.Column1,
        Object1.Column2,
        MIN(Object2.Column3) AS Column4,
        MAX(Object2.Column3) AS Column5,
        COUNT(DISTINCT (CASE WHEN Object2.Column6 = 1 THEN Object1.Column7 END)) AS Column8,
        COUNT(DISTINCT (CASE WHEN Object2.Column9 = 0 THEN Object1.Column7 END)) AS Column10,
        COUNT(DISTINCT Object1.Column7) AS Column11
from Object3 Object1
join Object4 Object2 on Object2.Column12 = Object1.Column13 and Object2.Column2 = Object1.Column2
where Object2.Column14 = 0
GROUP BY Object1.Column1, Object1.Column2 OPTION (RECOMPILE) 

有人可以帮助我们理解为什么新计划会有如此大的成本吗?如果需要,我很乐意在下面提供有关表/索引的其他信息。

在原始计划的情况下,我们确实意识到它正在执行插入而不是选择。即便如此,选择(在我们看来)不应该那么昂贵。

这是实际的执行计划。这是一个问题,因为由于计划成本高得多,它是并行的。因此使用更高的CPU。此外,我们只是想知道为什么计划成本会因为预暂存数据之类的事情而上升那么多,这通常会让你接近甚至更好,而不是原始成本。

临时表在第二个查询中被索引为 Object1.Column13 和 Object1.Column2 上的复合集群 PK。这与 Object4 的列(和顺序)匹配。添加MAXDOP提示是一种选择,但这也是“世界上为什么成本会上涨那么多”的学术练习?

添加OPTION (ORDER GROUP)到第二个查询结果没有变化,相同的运营商/成本。

笔记:

  • 第一个查询中的 Object9 与第二个查询中的 Object4 是同一个对象。
sql-server performance
  • 1 个回答
  • 404 Views
Martin Hope
Kris Gruttemeyer
Asked: 2017-02-28 09:32:47 +0800 CST

应用 2014 SP2+CU4 后 CDC Capture 作业失败/CT 表列更改

  • 7

我们遇到了 CDC 的问题,其中捕获作业失败并且不会自行重新启动。它是在 DEV 环境中,所以没有伤害,但有没有人看到这些错误或知道 CDC 到底出了什么问题?

SQL 2014 EE 12.0.5540 - 带有 SSISDB 的 2 节点 AG

在此处输入图像描述

过程或函数 sp_batchinsert_1663605265 指定的参数过多。更多信息查询 sys.dm_cdc_errors 动态管理视图

日志扫描进程未能从日志序列号 (LSN) {00002d0d:0000f11f:0002} 构造复制命令。备份发布数据库并联系客户支持服务。了解更多信息

日志扫描进程在处理日志记录时失败。请参阅当前会话中的先前错误以确定原因并纠正任何相关问题。更多信息查询 sys.dm_cdc_errors 动态管理视图

我们尝试使用sp_cdc_drop_jobabd删除并重新创建捕获作业sp_cdc_add_job。我们还尝试故障转移到另一个节点以及服务器/服务重新启动。似乎没有什么能让 CDC 自行重启。

我们在周五通过 AG 滚动补丁应用了 CU4,因此我们处于最新和最好的状态。这个问题是在我们修补并故障转移后立即出现的。

增加日志查询结果

在此处输入图像描述

sql-server sql-server-2014
  • 1 个回答
  • 4494 Views
Martin Hope
Kris Gruttemeyer
Asked: 2016-07-26 11:10:28 +0800 CST

SQL Server 2014 (12.0.4439.1) to SP2 (12.5000) 服务启动失败

  • 2

对于著名的 SSISDB SP1 惨败似乎非常熟悉,我在将 DEV 服务器升级到 SQL 2014 SP2 时遇到了障碍。

基础版本是 SP1+CU5 (12.0.4439.1)。我们安装了 SSISDB,它位于 AG 中。我在辅助服务器上运行升级包并收到 SQL Agent 无法启动的错误。

我通过配置管理器检查了服务,发现没有任何服务恢复。这是日志文件给我的内容:

2016-07-25 15:02:44.76 spid5s      Database 'master' is upgrading script 'SSIS_hotfix_install.sql' from level 201331031 to level 201331592.
2016-07-25 15:02:45.89 spid5s      Error: 945, Severity: 14, State: 2.
2016-07-25 15:02:45.89 spid5s      Database 'SSISDB' cannot be opened due to inaccessible files or insufficient memory or disk space.  See the SQL Server errorlog for details.
2016-07-25 15:02:45.95 spid5s      Error: 912, Severity: 21, State: 2.
2016-07-25 15:02:45.95 spid5s      Script level upgrade for database 'master' failed because upgrade step 'SSIS_hotfix_install.sql' encountered error 945, state 2, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
2016-07-25 15:02:45.95 spid5s      Error: 3417, Severity: 21, State: 3.
2016-07-25 15:02:45.95 spid5s      Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.
2016-07-25 15:02:45.95 spid5s      SQL Server shutdown has been initiated
2016-07-25 15:02:45.95 spid5s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.

还有其他人遇到过这个吗?我该如何着手恢复这件事?我真的需要恢复主数据库吗?

如果您需要任何其他信息,请告诉我。这是发生这种情况的非生产辅助设备,因此我们不会处理停机或违反任何 SLA。如果这是我们在使用 SP1 时遇到的同一个问题,我绝对愿意大声疾呼。

sql-server ssis
  • 1 个回答
  • 823 Views
Martin Hope
Kris Gruttemeyer
Asked: 2015-07-22 09:20:43 +0800 CST

日志传送大型数据库 - 日志呢?

  • 8

我目前正在设置一个大型数据库(大约 1.5TB)的日志传送,并且想知道我可以对日志文件做些什么。

就目前而言,我想执行以下步骤:

  1. 将 DB 更改为 FULL 恢复
  2. 在主服务器上进行完整备份(5-6 小时)
  3. 将 FULL 备份恢复到辅助(保留在 NORECOVERY 中)
  4. 在主数据库上进行 DIFF 备份
  5. 将 DIFF 备份恢复到辅助(仍在 NORECOVERY 中)
  6. 使用“数据库已初始化”初始化日志传送

问题是,当我进行完整备份时,日志文件将比备份完成的速度更快。

我有哪些选项可以防止日志文件填满?我能否在完整备份期间照常进行日志备份,因为 DIFF 还原将涵盖该时间范围内发生的任何事务?以前有没有人用这种大小的数据库做过这个,有什么技巧/技巧可以让它更容易吗?

sql-server log-shipping
  • 1 个回答
  • 1314 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-12-18 13:48:04 +0800 CST

SQL Native 备份 MIRROR TO 性能

  • 5

我们明年将转向 SQL Server 2014 Expensive Edition Q1。现在我们使用的是 SQL Server 2005 Standard Edition,因此我们无法访问非常棒MIRROR TO的备份选项(我们使用 Ola Hallengren 的脚本)。

现在我们正在使用 robocopy 将文件复制到网络共享,以防我们存储在本地的备份损坏、丢失或决定休个长假。我的问题是,当我们使用该MIRROR TO选项时,它是否比仅使用 robocopy、xcopy 或 Powershell 解决方案占用更多/更少的资源?MIRROR TO当我们在 SQL Server 中使用时到底发生了什么?如果可能的话,寻找一些“具体细节”的答案。

sql-server sql-server-2005
  • 1 个回答
  • 557 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-10-31 08:38:32 +0800 CST

sp_testlinkedserver 输出详细

  • 3

我已经构建了一个脚本/代理作业,它每 10 分钟轮询一次我们的链接服务器,以确保它们在线。现在,当一个人离线时,它会生成一封电子邮件并通知我。见下文: 在此处输入图像描述

现在,现在它只使用通过/失败。我想做的是,当服务器之间的通信离线时,不仅要生成它离线,还要生成原因。类似于您在测试链接服务器并且它处于脱机状态时从 SSMS 获得的读数:

在此处输入图像描述

这可能吗?我已经搜索了可能帮助我完成此任务的任何其他详细参数,但找不到任何参数。这些信息是在 SSMS 中生成的,所以我相信有某种方法可以得到它,我只是不确定如何。

像往常一样感谢伙计们!

已更新 必须为此添加一些系统特定的功能以及我自己已经构建的 SQL,但错误报告是在线的。适用于我们的 SQL 服务器和 iSeries/400 环境。这是它现在吐出的内容:

在此处输入图像描述

再次感谢您对此提供的所有帮助。可能必须将其发布到 SSC,以便其他人可以使用它。

sql-server linked-server
  • 2 个回答
  • 4197 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-10-15 12:38:52 +0800 CST

TempDB 不可用于 DBCC 维护计划

  • 2

我正在尝试清理我们的一些维护计划,并注意到我们的 TempDB 没有获得每周一次的 DBCC CHECKDB 好处。我试图进入维护计划并确保它在那里,但它没有出现在复选框区域。知道为什么会发生这种情况或有任何指示可以再次选择 tempDB 吗?我知道我总是可以只添加一个执行 SQL 任务,但我希望通过维护计划一步完成这一切。我也尝试过创建一个全新的计划并尝试以这种方式选择它,但仍然没有任何乐趣。

这是一个 DW 环境,2008R2,256GB RAM,64 核(支持 HT)。我们的 TempDB 文件/日志单独位于 FusionIO 卡上,因此没有争用。

再次感谢!

sql-server tempdb
  • 1 个回答
  • 1410 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-09-16 12:21:28 +0800 CST

SSMS 2008 / 2014 显示 TempDB 文件大小的不同值

  • 0

这是一个有趣的。上周我将 tempdb 数据库中的初始文件大小重新配置为每个 1GB。几周前我们发生了一个事件,由于没有索引的表被彻底破坏,我们的服务器被锁定了。这导致我们的 3 个 tempdb 文件增长。我使用 SSMS 2014 重新调整了它们的大小,当我们重新启动服务器时,它们应该在上周日重置为配置的大小。他们没有,现在我看到 SSMS 为这些文件返回的信息有所不同。

我们的服务器是 2008 R2,这里是不同的 SSMS 视图:

2008年:

在此处输入图像描述

2014:

在此处输入图像描述

以下是当前位于服务器本身的文件:

在此处输入图像描述

SSMS 2014 似乎返回了正确的信息,但 SSMS 2008 却没有。这是任何人以前见过的已知问题吗?如果是这样,是什么原因造成的?2014 是否尝试以不同于 2008 R2 的方式存储此信息并否定 2008 配置值?

现在,服务器重新启动后没有发生自动增长事件(检查默认跟踪并且没有事件)鉴于此信息,您认为我最好的行动方案是适当地重新调整这些文件的大小。我完全同意将所有文件增加到 2GB,但这些 tempdb 文件几乎没有被使用(所有文件的使用率都低于 5%)。

服务器没有着火或发生任何事情,生产运行良好,但我们绝对希望所有这些 tempdb 文件配置为相同的大小。

编辑:请求查询的结果

在此处输入图像描述

sql-server sql-server-2008-r2
  • 1 个回答
  • 236 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-09-11 06:11:05 +0800 CST

Pulling Top 查询在查询计划和 sql 文本中返回 NULL

  • 4

我正在使用以下代码来提取我们的前 20 个查询(按 CPU 排序):

SELECT TOP 20 qs.sql_handle
    ,qs.execution_count
    ,qs.total_worker_time AS [Total CPU]
    ,qs.total_worker_time / 1000000 AS [Total CPU in Seconds]
    ,(qs.total_worker_time / 1000000) / qs.execution_count AS [Average CPU in Seconds]
    ,qs.total_elapsed_time
    ,qs.total_elapsed_time / 1000000 AS [Total Elapsed Time in Seconds]
    ,st.TEXT
    ,qp.query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC

但是,我看到了这个: 在此处输入图像描述

任何人都可以解释为什么查询计划和 SQL 文本显示为 NULL 吗?它们是某种系统进程还是外部应用程序?我们正在运行 SQL 2008 R2。

谢谢,一如既往,大家!

sql-server dmv
  • 2 个回答
  • 2692 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-08-26 07:51:17 +0800 CST

如果我们不能使用并行性,TempDB 文件的数量

  • 0

目前我们有 4 个核心和 4 个 tempdb 文件。我大约 2 个月前刚成为 DBA,出于某种原因,3 个 tempDB 文件是 2GB,1 个是 1GB。显然,这不是最佳做法。

作为强迫症和积极主动的人,我想调整该文件的大小以与其他 3 个相匹配。

但是等等,还有更多。它用于具有通过不使用任何并行性来提高性能的应用程序的系统,因此我们将其禁用。MAXDOP = 1,成本阈值 = 0。它是系统上唯一的应用程序,SQL 实例基本上是为这个应用程序设计的。

大家对此有何看法?考虑到我们的 MAXDOP = 1,它是否有助于缓解所看到的任何减速?另外,当我更改文件大小时,我应该注意哪些影响/问题?我会在晚上做,非生产时间。

感谢您的帮助。

sql-server tempdb
  • 1 个回答
  • 411 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-08-16 05:14:09 +0800 CST

针对临时工作负载进行优化

  • 6

我知道这个选项的作用以及如何启用它。我的问题是如果我启用它会发生什么。

无需提供太多信息,我们的会计系统是 Microsoft Dynamics 产品,它使用 VM、32GB RAM(SQL Server [2008 R2] 可用 28GB)。他们让他们的供应商来查看我们的配置,以解决会计团队已经看到的某些性能问题。他们甚至让另一个 DBA 来看看我们的配置。他的建议之一是“查看缺失的索引”。我们可以说几乎每个存在的 SQL 服务器实例,每个表都有一个唯一的非聚集索引,这不是我的选择,但我告诉我,对软件访问的表上的索引进行任何更改都可能导致问题小贩。他的第二个是启用“针对临时工作负载进行优化”。我'

通过针对临时工作负载进行优化,我知道单次使用计划存储为存根,整个计划实际上并没有保存在缓存中,直到计划运行两次。有了这样的系统,我们真的会看到任何形式的性能提升吗?根据 Kimberly Tripp 的文章,我运行了以下查询:

SELECT objtype AS [CacheType]
    ,count_big(*) AS [Total Plans]
    ,sum(cast(size_in_bytes AS DECIMAL(18, 2))) / 1024 / 1024 AS [Total MBs]
    ,avg(usecounts) AS [Avg Use Count]
    ,sum(cast((
                CASE 
                    WHEN usecounts = 1
                        THEN size_in_bytes
                    ELSE 0
                    END
                ) AS DECIMAL(18, 2))) / 1024 / 1024 AS [Total MBs - USE Count 1]
    ,sum(CASE 
            WHEN usecounts = 1
                THEN 1
            ELSE 0
            END) AS [Total Plans - USE Count 1]
FROM sys.dm_exec_cached_plans
GROUP BY objtype
ORDER BY [Total MBs - USE Count 1] DESC

这是我得到的结果:

在此处输入图像描述

现在,我们可以看到,我们有大约 1.7GB 的单次使用计划。可能值得打开此选项,因为该框有 28GB 可用于 SQL 服务器,对吧?好吧,我们正在谈论释放 1-1.25GB 的空间,因为存根仍然占用空间,只是没有那么多。我运行了一个查询来提取所有单次使用计划并获取它们的大小,我们最大的计划约为 1-1.5MB。

所以,这是我的问题(抱歉花了一段时间才真正解决这些问题):

  • 我们真的认为我们会在这里看到可衡量的性能提升吗?如果是这样,除了查看上面查询中使用的空间之外,我们如何量化它?
  • 可以理解的是,我犹豫在生产系统上使用这样的开关。我应该注意哪些影响?过程缓存会自行擦除并重建吗?开启此功能时,我应该注意哪些问题?
sql-server execution-plan
  • 1 个回答
  • 2079 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-26 10:30:39 +0800 CST

差分/T-Log LSN 问题

  • 5

所以,这是我关于这个话题的第三个问题。我只是不断地发现越来越多的东西,而不是我想知道和理解的关于完全恢复是如何工作的。

昨天我们通过在早上 7 点进行完整备份将数据库转换为 FULL。从那时起,我们每小时进行一次 T-Log 备份,每晚 12:01 进行一次差异备份。我正在生成一些可以自动通过电子邮件发送给我的报告(自动化万岁!),我注意到 LSN 编号有些有趣。也许我只是不明白他们是如何工作的,但这里是。

自我们昨天启动完全恢复以来,显示文件、日期、大小、LSN 等的查询结果图片:

在此处输入图像描述

我已经突出显示了让我感到困惑的 LSN,希望它能让大家更容易阅读。这是我的问题:

  1. 完整备份的高 LSN 是“308000000583700001”,差异备份 [图片中的第 13 行] 低 LSN 不应该也是为了让日志正确链接吗?我是否误解了完整日志文件和差异日志文件是如何相互同步的?

  2. 您会注意到,在凌晨 12:01 获取的差异具有“311000000469900001”的高 LSN,但在凌晨 1:00 获取的 T-Log 备份具有完全相同的高 LSN。这仅仅是因为没有活动,而 T-Log 只是“赶上”以匹配差速器的 LSN 吗?

我正在绞尽脑汁,试图确保我不仅知道如何实施这样的恢复策略,而且我还完全理解 LSN 在生成时是如何同步的。

再次感谢您像往常一样在此方面提供的所有帮助!

以下是用于提取此结果的 SQL,以防您想使用您的系统进行调查:

    SELECT TOP 48 CAST(s.database_name as char(10)) AS DB
    ,CAST(' ' as char(1)) + CAST(SUBSTRING(m.physical_device_name, 46, 40) as char(25)) AS FileName
    ,CAST(CAST(s.backup_size / 1000000 AS INT) AS CHAR(4)) AS MBSize
    ,CAST(DATEDIFF(second, s.backup_start_date, s.backup_finish_date) AS CHAR(4)) AS SecsTaken
    ,s.backup_start_date
    ,CAST(s.first_lsn AS CHAR(20)) AS first_lsn
    ,CAST(s.last_lsn AS CHAR(20)) AS last_lsn
    ,CASE s.[type]
        WHEN 'D'
            THEN 'Full'
        WHEN 'I'
            THEN 'Diff'
        WHEN 'L'
            THEN 'TLog'
        END AS BackupType
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    AND backup_start_date > '2014-07-24 07:00:00'
ORDER BY backup_start_date DESC

来自@Shankys 的回复,这是将 database_backup_lsn 和 chockpoint_lsn 添加到查询的结果集的样子。如您所见,backup_lsn 对所有备份都是相同的,表示它们与昨天创建的完整备份相关联。我希望这些信息可以帮助任何其他试图了解 LSN 工作原理的人!

在此处输入图像描述

sql-server backup
  • 1 个回答
  • 1094 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-22 08:02:12 +0800 CST

完整恢复和差异备份

  • 4

我将开始将我们的几个数据库从 SIMPLE 转换为完全恢复。上周我问了一个关于部署策略的问题,我还有一个问题。

考虑一下:

  • 周日(午夜)- 运行完整备份
  • 周一至周六(午夜)——运行微分
  • 每小时 - 事务日志备份

差异备份是否基本上消除了对当天事务日志的需要?

因此,如果我们在星期二晚上 10 点发生灾难性故障,我们将:

  1. 在受影响的数据库上运行尾日志备份
  2. 从周日晚上恢复完整备份
  3. 从星期一晚上恢复 DIFF 备份
  4. 从周二到灾难时间使用日志链进行恢复。

如果是这种情况,那么作为维护计划的一部分,我们是否可以简单地从星期一删除事务日志备份,因为我们与星期一晚上有差异?如果 DIFF 备份失败,保留它们以备冗余会更聪明吗?

sql-server backup
  • 1 个回答
  • 530 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-15 09:41:47 +0800 CST

从 SIMPLE 切换到 FULL 恢复模式的含义

  • 4

我有几个数据库,我想转移到完全恢复模式,这样我们就可以拥有时间点恢复能力。我们的所有数据库都不需要它,只需要那些事务繁重且包含不断更新的数据的数据库。

我做了很多研究,我完全理解当您切换到完全恢复时会发生什么,尤其是它与日志文件的关系。

我正在寻找的是一些建议或“陷阱”,这些建议或“陷阱”可能是由于将某些模式切换到完全恢复模式而产生的。

现在,我计划一次只做一个数据库,这样我就可以监控日志文件的增长并确定日志文件备份的最佳频率,以确保我们不会陷入日志文件失控的情况。我也知道,一旦我们切换到完整恢复,我需要在该数据库上运行完整备份。(我知道在我们这样做之前不会真正启用完整模式)。

我的计划也是每周运行一次完整备份,擦除前一周的日志文件,基本上是“重新开始”。

是否还有其他有用的考虑或建议。有什么我需要注意的吗?我们也每周运行一次完整的索引重建、DBCC CHECKDB 和统计信息重建。这些操作是否存在任何潜在问题(可能在该时间段内切换到 BULK_LOGGED 以免爆炸日志文件?)

感谢你的帮助!

sql-server-2008-r2 backup
  • 2 个回答
  • 7666 Views
Martin Hope
Kris Gruttemeyer
Asked: 2013-06-21 10:21:25 +0800 CST

SQL 导入/导出在导出时默认为字节流

  • 1

所以,我做了一些研究,但我似乎无法弄清楚。我不确定这是我缺少的某些设置还是什么。

对于基本信息,运行 SQL2012,64 位,所有这些好东西。我注意到,出于某种原因,当我使用查询从表导出到平面文件时,数据类型默认为字节流。过去,它始终默认为 DT_STR 并且顺利通过。

这是查询:

SELECT pin from IncrementalDM_Emails
where email in (select email from [7755_forsql])
order by pin

这是我得到的错误:

错误对话框

这是当我选择“编辑映射...”时导出显示的内容

映射对话框

现在,只需在“映射”对话框下选择“DT_STR”即可轻松解决此问题,但我经常使用此方法导出,所以我想找出它这样做的原因并修复它,这样我就不必总是进入编辑映射对话框。

跟查询和IN函数的使用有关系吗?任何帮助将不胜感激!

编辑:两个表中的数据都存储为 varchar(50)

sql-server sql-server-2012
  • 1 个回答
  • 1246 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve