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

nateirvin's questions

Martin Hope
nateirvin
Asked: 2023-09-15 07:52:49 +0800 CST

为什么即使有足够的磁盘空间,数据文件增长也会失败?

  • 5

我们有一个 SQL Server 2016 (v13 SP3) 企业版服务器托管在 Windows 故障转移群集/SQL 可用性组中,具有两个节点(主节点和辅助节点)。这两个节点在运行 Windows Server 2012 R2 64 位 (NT 6.3) 的 AWS EC2 实例内运行。

本周早些时候,服务器开始响应此错误:

Could not allocate space for object 'dbo.Batches'.'pk_Batches_BatchID' in database 'XXX' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

起初,这似乎非常简单:我们认为我们粗心并允许数据和/或日志文件变得太大。这些文件肯定已满,其中没有任何未分配的空间。我们认为我们只需要扩展 Windows (NTFS) 驱动器(由 AWS EBS 在后台支持)。“XXX”数据库有一个日志文件和两个数据文件 - 数据文件设置为无限增长(尽管一次只能增长 64MB),并且数据库只有默认的“PRIMARY”文件组,不涉及其他文件组。数据文件位于“D:”驱动器上。

但“D:”驱动器有超过 400 GB 的可用空间,那么为什么数据文件没有增长呢?

我们花了很多时间查看 Windows 集群和 SQL 可用性组,因为我们还看到大量有关 AG 状态进入“正在恢复”状态以及集群角色未正确应用/同步的错误。一些更改允许主节点恢复几分钟,但随后它会再次崩溃。(因此,我们检查“XXX”数据库本身的能力受到限制。)我们查看了 EBS 是否存在某种问题或中断,但没有发现任何错误。

我们意识到服务器已经过时且陈旧。我们意识到有些人会说使用/依赖自动增长是一种不好的做法。但这个问题与最佳实践无关——而是我们如何让这个当前关闭的生产服务器恢复正常运行?

sql-server
  • 1 个回答
  • 47 Views
Martin Hope
nateirvin
Asked: 2017-03-01 10:30:14 +0800 CST

为什么 INSERT INTO ... SELECT 不复制所有行?

  • 4

我有两台服务器,SERVER-01 和 SERVER-00(不是他们的真实姓名)。SERVER-00 是 SQL Server 2005 Standard 实例,SERVER-01 是 SQL Server 2014 Standard 实例。我有这个查询,每晚在 SERVER-00 上的 SQL 代理作业中运行:

truncate table DataWarehouse.dbo.documents
set identity_insert DataWarehouse.dbo.documents ON

INSERT INTO [DataWarehouse].[dbo].[documents]
    (
     [documentID]          
    ,[poNumber]
    ,[soldTo]
    ,[shipTo]
    )
SELECT 
     [documentID]
    ,[poNumber]
    ,[soldTo]
    ,[shipTo]      
FROM [server-01].[DataWarehouse].[dbo].[documents]

set identity_insert DataWarehouse.dbo.documents OFF

(实际查询包含更多列,为了便于阅读,我对其进行了修剪。)

在 SERVER-01 上,documents是一个视图。在 SERVER-00 上,documents是一个表。在此查询[server-01]中是 SERVER-00 上的链接服务器连接(它使用系统管理员的凭据连接到 SERVER-01)。

documentsSERVER-00 上只有大约一半的行被插入。作业没有记录错误消息或警告- 它总是成功的。这到底是怎么发生的?

sql-server linked-server
  • 3 个回答
  • 2455 Views
Martin Hope
nateirvin
Asked: 2015-07-25 09:45:40 +0800 CST

为什么添加事务复制发布会将所有表和列更改为“不用于复制”?

  • 0

我正在尝试设置复制 - 这是我第一次这样做,所以我可能在这里犯了一些菜鸟错误。现在我只是在开发环境中工作。我一直在关注此 MSDN 教程中给出的示例。

我已经将实例设置为它自己的分发者,然后我去创建一个发布(其中包括除了几个表之外的所有内容,以及除了一个视图之外的所有内容)。该发布创建得很好,但之后,所有表和列都已设置为“不用于复制”!因此,当我转到快照代理程序状态时,我当然会看到错误“当 IDENTITY_INSERT 设置为 ON 或复制用户正在插入 NOT FOR REPLICATION 标识列时,必须为表中的标识列指定显式值。”

第一次发生这种情况时,我认为我做了一些愚蠢的事情,所以我通过选择“禁用发布和分发”来回滚,并进行了一些挖掘。在我开始启用和设置复制之前,所有表都是将“不用于复制”设置为“false”的列,这是我所期望的。我重新设置了发布者和分发者设置,这并没有改变表/列设置上的任何内容。但后来我创建了出版物,它们都被修改了。我再次撤消,将它们全部恢复为“用于复制”,然后生成但没有运行发布脚本(使用 SQL Server Management Studio 的 GUI),并一次执行每个命令,检查“not for”的状态沿途复制”设置。它'sp_addarticle

每篇文章都添加了选项@identityrangemanagementoption = N'manual'and @schema_option = 0x000000000803509F,它转换为选项 0x1、0x2、0x4、0x8、0x10、0x80、0x1000、0x4000、0x10000、0x20000 和 0x8000000(请参阅这篇MSDN 文章了解它们的含义)。

环境是SQL Server 2012-dev是Developer版,最终生产环境是Standard版。我正在使用此脚本检查“不用于复制”设置的状态:

SELECT 
    tables.name AS table_name,
    columns.name AS column_name,
    COLUMNPROPERTY(columns.object_id, columns.name, 'IsIdNotForRepl') AS IsIdNotForRepl
FROM sys.tables
    JOIN sys.columns
        ON tables.object_id = columns.object_id
ORDER BY 3 DESC, 1, 2

为什么创建复制发布会主动将主题对象排除在复制之外,我该如何更改此行为?

sql-server sql-server-2012
  • 1 个回答
  • 781 Views
Martin Hope
nateirvin
Asked: 2015-01-29 10:01:11 +0800 CST

减小 varchar 列的大小会对数据库文件产生什么影响?

  • 16

我们的数据库中有许多表,VARCHAR(MAX)其中的列 a VARCHAR(500)(或比 max 小得多的东西)就足够了。自然地,我想清理这些,并将尺寸降低到更合理的水平。我理解的“如何”做到这一点:我的问题是改变这些列会对磁盘上​​的页面和现存文件有什么影响?(有很多关于当你增加一列时会发生什么的信息,但是很难找到关于当你缩小一个列时会发生什么的信息。)

有些表的行数非常少,所以我不担心更改的成本,但有些表很大,我担心它们可能会被重组并导致大量阻塞/停机时间。实际上,我只是想要一种估计维护窗口的方法。一般来说,我想更好地了解数据库引擎在这种情况下的行为方式。

提前致谢!

编辑:

我正在查看 20 个表,但其中只有一半的行数大于 1,000。最大的有近一百万行。VARCHAR(MAX)最严重的违规者是可以缩小到水平的具有 350,000 行和 4 列的表VARCHAR(500)。

sql-server sql-server-2012
  • 2 个回答
  • 14518 Views
Martin Hope
nateirvin
Asked: 2014-12-05 16:13:56 +0800 CST

事实表多次与同一个维度表关联是好是坏?

  • 4

我是 DW/BI 的新手,这似乎是一个非常基本的问题,但我似乎找不到好的答案。

我有一个事实表,它有多个与之关联的日期,所以我想我会有多个日期键返回到同一个维度表,例如SubmittedDateKey, ClosedDateKey。显然 SQL Server 可以做到这一点——我对此的保留意见是,当我以这种方式设计概念验证模式时,客户端工具(即 Tableau、Excel)似乎对如何映射关系感到困惑。(我还发现 这个论坛帖子说 Oracle 的 Analytic Workspace Manager 明确禁止这样做,这当然对我的 Microsoft 世界没有任何暗示,但表明这是一个普遍的禁忌。)

DW/BI 中是否有关于此的最佳实践?SubmittedDateDimension我应该有多个相同的维度表,例如,,而不是将一个维度表连接到这些键中的每一个ClosedDateDimension吗?

谢谢!

sql-server data-warehouse
  • 2 个回答
  • 531 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