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-1288

squillman's questions

Martin Hope
squillman
Asked: 2013-08-30 10:41:26 +0800 CST

事务日志自动增长持续时间

  • 2

我正在使用事件通知来捕获我服务器上所有数据库的数据和日志文件自动增长事件。我正在使用这些数据来分析数据库存储配置。

在查看数据时,我注意到事务日志增长的平均持续时间远高于我的预期,这让我认为我要么误解了数据,要么忽略了与事务日志自动增长的工作原理相关的一些事情。

这是今天捕获的日志文件增长事件的示例:

<EVENT_INSTANCE>
  <EventType>LOG_FILE_AUTO_GROW</EventType>
  <PostTime>2013-08-29T11:14:26.447</PostTime>
  <SPID>97</SPID>
  <DatabaseID>32</DatabaseID>
  <NTDomainName />
  <HostName>[cleansed]</HostName>
  <ClientProcessID>4884</ClientProcessID>
  <ApplicationName>.Net SqlClient Data Provider</ApplicationName>
  <LoginName>[cleansed]</LoginName>
  <Duration>4173000</Duration>
  <StartTime>2013-08-29T11:14:22.263</StartTime>
  <EndTime>2013-08-29T11:14:26.437</EndTime>
  <IntegerData>64000</IntegerData>
  <ServerName>[cleansed]</ServerName>
  <DatabaseName>MyDB</DatabaseName>
  <FileName>MyDB_log</FileName>
  <LoginSid>[cleansed]</LoginSid>
  <EventSequence>14637017</EventSequence>
  <IsSystem />
  <SessionLoginName>[cleansed]</SessionLoginName>
</EVENT_INSTANCE>

由于持续时间以毫秒为单位报告,我正在阅读此文件,因为它需要 69.54 分钟来增加文件。此日志文件的自动增长设置为 512MB(限制为 2TB)

SELECT
    growth AS GrowthPages,
    growth*8/1000 AS GrowthMB,
    max_size,
    is_percent_growth
FROM MyDB.sys.database_files
WHERE type=1

GrowthPages GrowthMB        max_size        is_percent_growth
64000       512             268435456       0

所有数据库都记录到同一个卷,该卷通过光纤通道连接到 SAN。(如果需要,我必须与我们的 SAN 管理员联系以获取有关存储配置的更多详细信息)。

实例是 SQL 2012 Enterprise,服务器是 Windows 2008 R2 Enterprise。

为什么将日志增加 512MB 需要一个多小时?我们没有注意到任何这些数据库的操作延迟(除非我们只是忽略它)。还有一些具有相似持续时间的其他数据库;他们的自动增长设置是相同的。具有较小自动增长设置的其他数据库的持续时间按比例较小。

sql-server-2012 transaction-log
  • 1 个回答
  • 417 Views
Martin Hope
squillman
Asked: 2013-03-19 10:50:39 +0800 CST

唯一索引键违规

  • 6

我有一个带有 PK 和唯一非聚集索引的表,如下所示:

CREATE TABLE Table1
(
    Id INT IDENTITY(1,1) NOT NULL,
    Field1 VARCHAR(25) NOT NULL,
    Field2 VARCHAR(25) NULL,
 CONSTRAINT PK_Table1 PRIMARY KEY CLUSTERED (Id ASC)
)

CREATE UNIQUE NONCLUSTERED INDEX IX_Field1_Field2 ON Table1
(
    Field1 ASC,
    Field2 ASC
)
WITH
    (
        PAD_INDEX = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        SORT_IN_TEMPDB = OFF,
        IGNORE_DUP_KEY = OFF,
        DROP_EXISTING = OFF,
        ONLINE = OFF,
        ALLOW_ROW_LOCKS = ON,
        ALLOW_PAGE_LOCKS = ON
    )

我有 2 个作业,我发现它们的执行时间相互重叠。它们都将相同的内容包含在此表中,并且最后开始的作业经常失败,因为它尝试使用重复的索引键值INSERT插入记录。Table1

INSERT Table1
SELECT Field1, Field2
FROM SomeOtherTable sot WITH (NOLOCK)
WHERE NOT EXISTS (
    SELECT 1
    FROM Table1 t1
    WHERE sot.Field1 = t1.Field1
    AND sot.Field2 = t1.Field2
)

据我所知,当评估来自 Job2 的 Job2 导致 Job2 尝试插入重复的键值时,Job1 中的INSERTin 仍在执行。NOT EXISTS在我看来,锁定Table1并没有按预期发生。

我不知道为什么会这样。NOLOCK这与 中使用的提示有什么关系INSERT?我不认为该提示将包含Table1在其范围内,仅SomeOtherTable.

IGNORE_DUP_KEY我知道我可以通过将索引设置为来减轻重复键错误,ON在这种情况下这对我们来说很好。不过,我想知道为什么重复项出现在第二次插入中。

sql-server-2008-r2 locking
  • 1 个回答
  • 2210 Views
Martin Hope
squillman
Asked: 2012-10-25 10:18:52 +0800 CST

是否可以确定当前正在执行的存储过程的哪一部分?

  • 5

假设我有一个这样的存储过程(假设表模式很好):

CREATE PROCEDURE p_MyProc
AS

INSERT MyTable SELECT Col1 FROM Table1

INSERT MyTable SELECT Col2 FROM Table2

INSERT MyTable SELECT Col3 FROM Table3

假设这些最终是大插入,每个可能需要几分钟,是否可以确定当前在存储过程的上下文中运行哪个?

我知道如何找到正在运行的存储过程,我只是想看看是否有一种方法可以获得更精细的信息,而无需在其中添加 PRINT 或其他跟踪语句。有没有办法让语句显示在跟踪中?

sql-server sql-server-2008-r2
  • 2 个回答
  • 1974 Views
Martin Hope
squillman
Asked: 2012-09-26 08:54:37 +0800 CST

从服务器配置中删除 IP 地址

  • 3

从 SQL Server 配置中删除旧 IP 地址的安全方法是什么?

场景是,我有一台带有 2 个 NIC 的服务器,该服务器应该已配置为进行分组,但在安装 SQL 时并未配置。每个都有不同的 IP,因此 SQL 会选择它并将每个 IP 添加到其配置中。

NIC 现在已组合在一起,并且盒子已降至单个 IP。我想从 SQL 配置中删除不再分配给服务器的 IP。我不想只是停用它,而是想完全删除它。

有没有安全的方法来做到这一点?还是只是删除HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.[Instance Name]\MSSQLServer\SuperSocketNetLib\Tcp\与相关IP相关的密钥并重新启动?

sql-server-2008-r2 configuration
  • 1 个回答
  • 6676 Views
Martin Hope
squillman
Asked: 2012-09-11 11:29:58 +0800 CST

从计划缓存中检索大型计划的 XML

  • 5

我正在尝试(以图形方式)查看计划缓存中的大型查询计划,并且遇到了查询结果中 XML 被截断的问题。这是我正在使用的查询:

SELECT TOP 1
    size_in_bytes,
    query_plan
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
ORDER BY size_in_bytes DESC

我已经在 SSMS 中尝试过,当我单击结果网格中的 XML 时,我得到Unable to show XML. Unexpected end of file when parsing Name has occurred. Line 1, position 2097154.如果我复制并粘贴 XML,它确实被截断了。

我试过手动使用SET TEXTSIZE 2147483647只是因为,但没有做任何事情。(我知道这是 SQL Native Client 提供程序的默认值,只是试图强制解决问题)。

我已经尝试通过SQLCMD从 .sql 文件运行语句并输出到文本文件,但这给了我更少的东西。

我尝试过SQLCMD交互式使用,:XML ON但出现了这个错误:

<?MSSQLError HResult="0x80004005" Source="Microsoft XML Extensions to SQL Server" Description="No description provided"?>

计划为 157 MB。

有没有办法把完整的计划拿出来让我看到?

sql-server-2008-r2 execution-plan
  • 1 个回答
  • 9304 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