标签: sql-server

分布式和/或并行 SSIS 处理

背景:我们公司托管 SaaS DSS 应用程序,客户每天和/或每周向我们提供数据,我们对这些数据进行处理并合并到他们现有的数据库中。在工作时间内,服务器中的负载非常小,因为大多数用户通过网站运行简单的预定义查询,或者运行主要访问 SSAS OLAP 多维数据集的钻取报告。

我管理 IT 运营团队,到目前为止,这给我们带来了一个有趣的“扩展”问题。对于我们每日刷新的客户端来说,服务器仅在晚上“忙碌”约 4-6 小时。对于我们每周刷新的客户来说,服务器每周“繁忙”的时间可能只有 8-10 个小时!

我们已尽力使用一些简单的方法来分配负载,将日常客户端均匀分布在服务器之间,这样我们就不会尝试在夜间连续处理日常客户端。但从长远来看,这种扩展策略会带来两个值得注意的问题。首先,它将消耗大量长时间闲置的硬件。其次,需要大量的生产支持开销来基本上“调度”ETL,以便它们不会重叠,并且在客户端/调度超出特定服务器上的资源或分配的时隙时移动客户端/调度。

正如标题所暗示的,我们尝试过的一个选项是并行运行多个 SSIS 包,但在大多数情况下,这会产生非常不一致的结果。最常见的故障是 DTExec、SQL 和 SSAS 争夺物理内存并引发内存不足错误,以及 ETL 的运行时间比预期长 3、4、5 倍。因此,从我迄今为止的实践经验来看,在同一硬件上运行多个 ETL 包似乎不是一个好主意,但我不能成为第一个不想围绕手动调度和顺序扩展多个 ETL 的人加工。

我们考虑过的一种选择是虚拟化服务器,这显然不会为您提供任何额外的资源,而是将资源争用转移到虚拟机管理程序上,(根据我的经验)管理程序似乎可以同时管理 CPU/RAM/磁盘 I/O这比让 DTExec、SQL 和 SSAS 在 Windows 中展开竞争更加优雅。

向论坛提出的问题:所以我向论坛提出的问题是,我们是否在这里遗漏了一些明显的东西?是否有工具可以帮助管理在同一硬件上运行多个 SSIS 包?如果我们不是在同一台机器上运行 DTExec、SQL 和 SSAS(每台机​​器都运行该配置),而是在三台机器上运行,SSIS 在一台机器上运行,SQL 在另一台机器上运行,那么在并行执行方面会更“高效”吗? ,第三个是 SSAS?显然,只有当我们能够处理超过我们能够在机器上独立处理的三个 ETL 时,这才有意义。

我们考虑的另一种选择是完全重新构建我们的 SSIS 包,为所有客户端提供一个“主”包,尝试根据服务器在 CPU/内存/磁盘利用率方面的“繁忙”程度智能地选择服务器,但这将是一项艰巨的努力,而且我们似乎正在尝试重新发明一些你认为有人会出售的东西(尽管我没有运气找到它)。

总而言之,我们是否缺少一个明显的解决方案,是否有人知道是否有任何工具(免费或购买,无关紧要)可以促进在多个服务器上并行运行多个 SSIS ETL 包?(我称之为“基于队列和节点”的系统,但这不是官方术语)。最终,VMWare 的分布式资源调度程序解决了这个问题,因为您只需在每个虚拟机上运行一致数量的客户端,您知道这些客户端永远不会在调度方面发生冲突,然后由 VMWare 来移动虚拟机以平衡硬件使用。我绝对不反对使用 VMWare 来执行此操作,但由于我们是 100% Microsoft 应用程序堆栈,似乎有人会通过检查资源在应用程序层而不是虚拟机管理程序层解决此问题操作系统、SQL、SSAS 级别的利用率。

我愿意接受任何有关此问题的讨论,并记住没有任何建议是太疯狂或激进的!:-) 目前,VMWare 是我们发现的摆脱“手动”平衡资源的唯一选择,因此任何能让我们继续使用纯 Microsoft 堆栈的建议都很棒。

多谢你们,

  • 杰夫

sql ssis sql-server distributed-computing

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

如何强制删除 MSSQL Server 数据库

我正在尝试删除 MSSQL Server 数据库,但没有成功。我尝试过多种方法,例如

user
ALTER DATABASE my_database
SET RESTRICTED_USER
WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE my_database;
GO
Run Code Online (Sandbox Code Playgroud)

我也尝试过右键单击它并将其删除。

这不起作用,它告诉我“无法删除数据库“ima_debts”,因为它当前正在使用”。问题是肯定没有其他用户连接到它。事实上,我禁用了数据库的 TCP/IP 并重新启动它。

甚至“Microsoft SQL Server Management Studio(管理员)”也没有连接到它。我已确保登录“master”。

为什么它告诉我它当前正在使用。我是否可以从文件系统中删除目录或其他内容来删除该数据库?

任何帮助,将不胜感激。

谢谢。

sql-server

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

如何设置Zabbix来监控SQL Server故障转移主动-被动集群?

它应该很简单,所以很可能我的方法完全错误,希望有人能促使我走向正确的方向。

我们设置了一个 Zabbix 2.0.3 服务器实例来监视一堆不同的服务器,但现在我们需要将其设置为监视和通知有关 SQL Server 2008 R2 故障转移主动-被动集群的任何警报。

本质上,这是一个 2 服务器集群,在给定时间只有一个节点可以“活动”,为所有 SQL Server 相关请求提供服务,而另一台服务器只是“休眠”,并且从任何登录该服务器的角度来看服务器 - 所有 SQL Server 相关服务均处于停止状态。

我们尝试在两台服务器上设置 Zabbix 代理,使用 SQL Server 2005 模板(我们找不到任何 2008 特定的模板,2005 的模板似乎总是可以很好地监视 2008 R2 实例)并为两台服务器配置 Zabbix 服务器。服务器,但我们最终会收到持续的警报,因为该服务器当前是集群中的被动服务器。我们已经能够查找实际监控故障转移的各种方法,但我们无法找到有关如何指示 Zabbix 的任何指导,在这种特殊情况下,组中只有一台服务器预计会处于在线状态,而另一个可以直接丢弃,不应发出任何警报。

我希望我说清楚了。感谢您的任何指导。我没主意了。

cluster sql-server zabbix

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

域组策略下如何管理虚拟账户的登录服务权限?

我想使用默认的 SQL Server 设置,通过虚拟帐户 NT SERVICE\MSSQLSERVER 运行 SQL Server 服务。这可以确保我的 SQL Server 在其自己的计算机上具有有限的访问权限,并且在受到黑客攻击时无法访问网络资源。但是,我们的域还有一个组策略,为其他几个(域)设置“作为服务登录”权限。

您可能已经猜到,或者甚至经历过我的问题:

当域 GPO 应用于服务器时(至少每天一次),它会撤消由 SQL Server 安装程序(或 SQL Server Config Mgr 或其他本地计算机策略配置)完成的“作为服务登录”权限分配。然后,下次 SQL Server 服务重新启动时(可能是数小时或数月后),该阶段将设置为错误“服务未启动”错误。

到目前为止我所知道的是:

  • 我无法将虚拟帐户添加到域 GPO,因为它是计算机本地 SID。
  • 域组策略会覆盖本地计算机组策略,因此我必须对域组策略进行一些操作。

遗憾的是,用户权限分配元素位于计算机设置\Windows 设置\安全设置\本地策略设置下,因为它无法引用本地计算机帐户。也许这甚至是一个错误。

以下是我正在考虑的方法:

  • 我可以消除应用“登录即服务”权限的域 GPO 元素,并通过本地组策略(在一组服务器上)执行此操作。
  • 我可以将服务器移至未应用此 GPO 元素的 OU。目前,有问题的 GPO 是我的默认域策略,因此我必须重构一些内容。
  • 我可以在每台 SQL Server 计算机上运行一些工具,以便在域组策略运行后立即重新建立“登录为服务”,或者运行频率足够高,以至于我很少被发现。

有人可以向我提供其他建议或工作解决方案吗?

windows service-accounts group-policy sql-server

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

linux下如何查看/启动SQL browser服务?

我刚刚在Ubuntu 20.04下安装了MS-SQL 2019(我第一次在linux下安装这个Db)。我打开了端口 1433,并且可以通过 Windows 笔记本电脑上的 Management studio 通过服务器 IP 地址连接到它。

但是我认为服务器浏览器服务没有运行,因为即使我打开了端口 1434,我也无法浏览数据库。我还怀疑该服务可能默认被禁用。我进行了很多谷歌搜索,但似乎找不到浏览器服务的 Linux 相关说明。

如何检查浏览器服务是否正在运行?如果没有,我需要采取哪些步骤才能让它在 Ubuntu 下运行?

sql-server ubuntu-20.04

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

SQL 服务器的廉价集群

有人知道模拟集群 SQL 服务器解决方案的方法吗?我们显然不想花很多钱来制作这个想法的原型,但我们有很多 PC 可用。我只是想知道是否有任何方法可以让 SQL Server 认为它是通过使用物理机甚至虚拟机安装到集群硬件上的?

我当然不希望做任何性能测试,更多的是测试故障转移场景和复制等。

有任何想法吗?

cluster failover sql-server

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

查找 SQL 表使用多少磁盘空间?

有什么方法可以找出 MSSQL 中的表使用多少磁盘空间?或者更好的是,单行消耗多少磁盘空间?

sql-server

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

我应该在 SQL Server Express 2008 上使用什么“登录”?

如果我想让我的本地 Windows 用户被识别,我应该在我的工作站中运行的 SQL Server Express 2008 上使用什么“登录”来进行开发?

我看到的选项是“内置帐户”,让我在“本地系统”、“本地服务”或“网络服务”之间进行选择。另一个选项“此帐户”似乎允许我指定用户名和密码,但似乎用户是从系统上的帐户中选择的,我不确定。

sql-server sql-server-2008

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

SQL 2000 复制错误 - 订阅已被标记为非活动状态,必须重新初始化

我们有一个较大的数据库 (350GB),它被复制到一个不同位置的订阅者。不幸的是,我们在两个站点之间的连接速度很慢。

今天我们在分销商处收到以下错误:

订阅已被标记为非活动状态,必须重新初始化。

无论如何,我们是否可以在不从快照重建订阅的情况下将其重新启动?

replication sql-server

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

上次发生 SQL Server 停机或数据丢失时,发生了什么?

这不是关于如何应对或限制停机时间或数据丢失的问题,我知道这一切。我正在为我的 PASS post-con 关于灾难恢复整理一个“故事”部分,我希望能够分享一些比我在 Microsoft 的日子里的故事更近、更令人印象深刻的故事,尽管如果你”在过去的 3 年里,我曾听我展示过我的腐败套牌,你会记得他们都是傻瓜。

所以,想想这是一种忏悔(虽然我不能提供赦免:-)当然,这里讲述的所有故事都发生在朋友或同事身上,或者在以前的公司,除非你很勇敢并且想要'坦白。我不会评判或嘲笑任何答案,只会在被要求时提供见解。

真的,这个想法是让每个人都从错误和错误的步骤中学习。作为我听到的一个故事的例子,请参阅错误步骤和腐败的悲伤故事。

不确定这在这个论坛上是否有效,但值得一试。

谢谢!

PS 如果您还没有看过我的腐败会议并听过这些故事,那是去年 TechEd IT Pro 的第二场会议,他们录制了视频:请参阅TechEd:腐败生存技术演示的 80 分钟视频。博客文章链接到一堆损坏的数据库和演示脚本,您也可以下载和使用(我们网站上没有广告或类似内容,仅提供信息)。

disaster-recovery data-loss sql-server

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