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

Lando_'s questions

Martin Hope
Lando_
Asked: 2023-10-16 04:42:14 +0800 CST

在 Hyper-V 上存储 SQL 故障转移群集实例的数据库文件的位置

  • 5

我正在将旧的租赁结束硬件升级为全新/完全保修的企业级主机服务器和 10gb iSCSI SAN。在旧环境中,它由一堆旧的戴尔服务器组成,带有大量闪存和 SSD 存储,通过 SMB 为 VM 和 SQL FCI 存储提供一切服务。(性能非常出色,但我已经在一台失败的硬件上度过了 4 年多的时间,远离灾难)

整体虚拟化环境现在是在 3 主机集群中运行 Hyper V 的 Windows Server 2022。2 个 SQL VM 是故障转移组中的 Server 2019 和 SQL 2017。

所有主机和虚拟机存储均已迁移到新的 iSCSI SAN,但 SQL 文件仍通过网络存储在旧戴尔主机上,并使用所有闪存和 SSD。在 Hyper-V 环境中,处理 SQL FCI 共享存储要求的最佳方法是什么?

我进行了大量搜索,但没有发现任何结论性的信息,最新的文档是关于在 Azure 中运行 FCI 的。我考虑过几种选择:

  1. SAN 是 Dell Unity,因此我可以进行 NAS 共享并继续使用 SMB,但我需要向 SAN 添加另一个网络适配器以保持网络正确隔离,我对此持开放态度,但我宁愿只拥有SAN 做所有的块存储。
  2. 共享 VHDX - 不确定这是否是最好的方法,但可以在主机级别工作,并且不需要 SQL VM 中的任何新功能
  3. SQL 故障转移组中的 CSV - 这需要虚拟机中的 iSCSI 启动器,我不知道这是否是最佳实践?看起来网络层的情况变得很糟糕。

还有什么是我应该考虑而我没有考虑的吗?其他人如何处理这种情况?

另外值得注意的是,我并不是在寻找无共享 AG,该环境托管了十几个严重依赖于 SQL 代理的第三方系统数据库,因此 FCI 是首选。

sql-server
  • 2 个回答
  • 37 Views
Martin Hope
Lando_
Asked: 2023-04-20 13:58:19 +0800 CST

审计触发器仅在特定列更改时跟踪,并且仅记录已更改列的旧值和新值

  • 5

我有一个包含 75 列的表,并且需要跟踪其中大约 15 列,以便在这 15 列中的任何列中的任何数据发生变化(仅更新,无插入或删除)时注销旧值和新值。例外情况是我们只想跟踪这 15 个列中更新的列。如果旧值和新值均为 NULL 或两者相同,我们只想将 NULL 记录到这些列的审计表中。

多列可以为空,并且是整数、小数和 nvarchar 数据类型的组合。

这一切都在 Azure SQL 数据库上运行。

我写了一个初始的更新后触发器,它有一个插入语句到一个有 30 列的审计表中,一个“旧”和“新”列用于我们希望跟踪的所有 15 个列。当旧值和新值都不为 NULL 时,这一切都很好,但如果旧值或新值之一恰好为 NULL,我们就会丢失数据。

为了解决这个问题,我开始为每一列编写 case 语句,以及一堆 where 子句,但我觉得这不是正确的方法。基本上,有 15 种不同的语句变体,例如:

CREATE OR ALTER TRIGGER [dbo].[trg_Stuff_Audit]
ON [dbo].[Stuff]
AFTER UPDATE
AS
BEGIN

insert into dbo.audit (id, OldDecimalValue, NewDecimalValue)

select i.id,

case when d.DecimalValue is null and i.DecimalValue is not null then d.DecimalValue
when d.DecimalValue is not null and i.DecimalValue is null then d.DecimalValue
when d.DecimalValue <> i.DecimalValue then d.DecimalValue
else NULL end as OldDecimalValue,

case when d.DecimalValue is null and i.DecimalValue is not null then i.DecimalValue
when d.DecimalValue is not null and i.DecimalValue is null then i.DecimalValue
when d.DecimalValue <> i.DecimalValue then i.DecimalValue
else NULL end as NewDecimalValue

from inserted i inner join deleted d on i.id = d.id

where d.DecimalValue is null and i.DecimalValue is not null
OR d.DecimalValue is not null and i.DecimalValue is null
OR d.DecimalValue <> i.DecimalValue

END;

我觉得必须有更好的方法来解决这个问题,我是走在正确的道路上还是需要改变方向?

trigger
  • 3 个回答
  • 39 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