问题标签 [transactional-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
737 浏览

sql-server - Replication Snapshot Agent file naming

When SQL Server Snapshot Agent creates a snapshot (for transactional replication), there's a bunch of .PRE, .SCH, .BCP, and .IDX files, usually prefixed with the object name, a sequence number and part number. Like MY_TABLE_1#1.bcp for MY_TABLE.

But when table names are a little longer like MY_TABLE_IS_LONG it can name the files like MY_TABLE_IS_LO890be30c_1#1.

I want to process some of these files manually (i.e. grab a snapshot and process the BCPs myself) but that requires the full name of the table, and I haven't been able to find where that hex number is created from or stored. They don't appear to be a straight object_id, and I've checked various backing tables in the distribution and publication databases where the tables have an objid and sycobjid and it's neither of those either (after converting hex to decimal).

Does anyone know where that number comes from? It must be somewhere.

0 投票
3 回答
8943 浏览

sql-server - T-SQL to find if a Database is Subscribed on the Subscriber in Transactional Replication

T-SQL to find if a Database is Subscribed on the Subscriber in Transactional Replication. I don't want to query Distribution for the details.

The following doesn't work.

0 投票
1 回答
1851 浏览

sql-server - 使用 SQL Server 进行实时聚合和非规范化的架构推荐

我们有一个企业 LOB 应用程序,用于使用 SQLServer (2008) 管理数百万个书目(大量文本)记录。该数据库非常规范化(一条完整的记录可能很容易由十个连接表和嵌套集合组成)。写事务很好,我们现在有一个响应速度非常快的搜索解决方案,它大量使用全文索引和索引视图。

问题在于,实际上,研究用户需要的大部分内容都可以通过只读仓库类型的数据副本更好地服务,但需要近乎实时地不断复制(几分钟的延迟是美好的)。

我们的搜索已经通过几个计算列或复合表进行了优化,我们还想添加更多。索引视图无法满足所有需求,因为它们的约束(例如没有外部连接)。这些数据有几十个“方面”,就像只读数据仓库可能提供的那样,涉及权限、地理、类别、质量和相关文档的数量。我们还编写了相当静态的记录的复杂 xml 表示,并且可以编写和存储一次。

如果完全通过触发器完成,反规范化、计算和搜索优化的总量会引发不可接受的延迟,并且还容易发生锁冲突。

我研究了微软的一些 SQL Server 建议,我想知道是否有任何有类似要求经验的人可以提供以下三个建议(或其他使用 SQL Server/.Net 堆栈的建议):

  1. 事务复制到只读副本 - 但从文档中不清楚可以在订阅方更改多少架构并添加触发器、计算列或复合表;

  2. 表分区- 不是为了改变数据,而是为了分割当前不断重新计算的大数据区域,例如权限、记录类型 (60)、地理区域等……这将允许事务端的触发器运行更少的锁?

  3. 离线批处理——微软经常使用这个短语,但没有给出很好的例子,除了在交易复制的订户端“检查信用卡欺诈的迹象”......这将是一个很好的例子,但它是如何完成的究竟在实践中?每 5 分钟运行一次的 SSIS 作业?服务经纪人?不断轮询的外部可执行文件?我们希望避免“在夜间运行长时间进程”解决方案,并且我们还希望通过在事务服务器上每 5 分钟运行一次更新密集型聚合/合成例程来避免锁定事务方面。

    • 更新到 #3:发布后,我发现这个 SO 答案带有指向使用变更跟踪、服务代理、SSIS 和触发器的实时数据集成的链接- 看起来很有希望 - 这是推荐的路径吗?

    • 另一个更新:这反过来又帮助我找到了 rusanu.com - SO 用户Remus Rusanu的所有东西 ServiceBroker 。异步消息传递解决方案似乎比复制场景更符合我们的场景......

0 投票
1 回答
995 浏览

c# - 使 sql server 实例远程可用的最佳方法?链接服务器或复制?其他?

我和一个同事正在开发一些药房软件(用 C# 编写),它处理患者资料、患者药物处方等的管理。所有这些不同的数据集都存储在一个 sql server 数据库中(我们正在使用2008 标准,但未来版本也很好)。每个商店在本地机器上都有自己的 sql server 实例。

我们的目标:

如果需要,我们希望“Store A”能够访问“Store B”的数据库。基本上,如果药房客户可能不在城里并访问其他药房分支机构之一。

我想到的事情:

  1. 我最初的想法是基本上保留一个可以通过 dns 链接(或者可能是 IP)访问的 sql server 的在线服务器实例。我试图找出使这些保持同步的最佳方法,但我遇到了 sql 服务器复制。问题是我打算使用事务复制来更新订阅者,但由于它已被弃用,它不再是一个真正的长期选择。Microsoft 建议使用 p2p 复制,但这需要企业版,如果可以的话,我们确实在努力避免这种情况。我想使用事务类型的复制,因为它在保持记录一致方面做得更好(不必等待像合并代理作业这样的东西每小时运行一次或类似的东西)。

  2. 我最近想到的可能是拥有一个基于 Internet 的 sql server 实例,它只包含链接到每个商店本地机器的服务器。如果其他商店直接在彼此的本地机器上工作,我就不必担心同步问题。但是我读过很多人说这是一个可怕的安全漏洞,所以我不确定这是否是一个合理的想法,但我认为也许有一些方法可以使这个工作?

无论如何,这是我们正在尝试做的事情的基本要点。我不知道复制或链接服务器是否会是更好的选择。

编辑:

双向复制呢?我正在阅读一些关于此的内容,但我有点不确定这是否是我需要的。我不想在服务器或任何东西之间错开主键,因为它们在识别处方号和类似的东西方面非常重要。但如果我可以进行双向复制,那也很好。

0 投票
1 回答
206 浏览

sql-server-2012 - SQL Server - 创建分发服务器会导致错误

当我尝试在 SQL Server 2012 数据库上创建分发服务器时,我收到以下错误。在过去的 6 个小时里,我尝试了很多东西,但没有任何效果。有没有人有任何想法?

在此处输入图像描述

0 投票
1 回答
161 浏览

sql-server - 如何处理这种复制场景?

假设有一些数据库:P、S1、S2、S3 等。

P(发布者)有一些表需要在S1、S2 和 S3(订阅者)上复制(克隆和同步)。这些表的副本将是只读的。此外,副本将被 S1、S2、S3 等中的一些其他表引用(通过外键)。

例如,

  • P 有表P.O1P.O2。S1 将具有S1.O1_copy、S1.O2_copyS1.OTHER,其中 S1.OTHER 引用 S1.O1_copy。

根据您的经验,可以在这种情况下使用SQL Server 事务复制(据我所知,这是基于日志的复制)吗?还是我应该更好地使用基于触发器的复制?不过,我认为每次添加新订阅者(数据库)时都可能需要更新触发器。

P 中需要复制的表很少更新,但更新操作需要是事务性的,以确保数据一致性(从副本中读取的任何内容都应返回所请求数据的最新快照)。

谢谢 :)

0 投票
2 回答
972 浏览

sql - SQL Server 2012 数据库事务复制性能问题

我们为客户的 .NET Web 应用程序配置了 SQL Server 2012 数据库事务复制,以便在不同的 SQL Server 上分发 SQL 事务和报告。

我们已经在 SQL-Node1 上实现了事务复制,它作为主数据库服务器工作,我们在 SQL-Node2 上配置了主数据库的复制,以将报告提取到我们的 Web 应用程序中,该应用程序有大量的事务和数据从 Excel 工作表条目上传每天大约有 1000 万个条目。

在两个 SQL Server 2012 实例上配置复制后,几周后我们遇到了一些性能问题,并发现在将文件上传到数据库期间某些资源被锁定,这就是应用程序无法访问这些表和数据的原因。还发现当用户访问我们的 Web 应用程序时,服务器在白天执行速度太慢。

现在我们正在寻找在 SQL Server 2012 的不同 3 个节点上分配负载。Web 应用程序将在 SQL-Node1 上访问和处理数据,报告查询从 SQL-Node2 获取数据,SQL-Node3 将用于上传 Excel 表将数据复制到所有其他 SQL 节点上的数据库。

当前设置,所有具有 Windows Server 2008 Standard 和 SQL Server 2012 Enterprise Edition 的服务器。

数据库大小约:15 GB/使用的复制:在 SQL 节点 1 上配置的事务/分发者角色/在 SQL 节点 2 上配置的订阅者角色。

我们正在寻找解决上述问题的解决方案,可以在所有 SQL 节点之间分配不同的负载(报告、数据上传、事务)和复制数据。

SQL Server 2012 HA、SQL Server Replication 或 SQL Server Mirroring 中的哪个功能在上述场景中表现良好?

快速响应将不胜感激......

0 投票
1 回答
1253 浏览

sql-server - SQL Server 跨数据库视图

我正在尝试为我们的 CRM 建立一个报告平台。系统的设计为每个客户端都有一个单独的数据库(具有相同的结构)。我正在将这 50 个数据库复制(事务性)到报表​​服务器,但我现在想将所有数据集中到一个“报表”数据库中。每个表都有一个新的客户 ID 列,它将保持记录的唯一性并链接到一个新的客户表。

我希望数据尽可能接近实时(因此是事务性的)。我想过使用一个大的跨数据库视图,但有些事情告诉我这不是最好的方法。

我想我可以在每个客户端数据库上都有触发器,只要有更新、删除或插入,就会更新报告数据库。不确定是否可以使用 SSIS。我过去只将它用于ETL。

所以我想知道将多个数据库组合在一起并保持数据与生产环境同步的最佳实践是什么。

0 投票
2 回答
953 浏览

sql-server - 复制 - 将文章添加到发布导致所有其他文章的快照

将文章(表)添加到发布,然后运行快照代理应该只为新文章创建快照。但是,有时复制会决定重新对出版物中的每篇文章进行快照。所以,我有两个问题:

  1. 如果只添加一篇文章,为什么有时所有文章都会重新快照?
  2. 是否可以在快照代理下次运行时(例如在 DMV 或系统表中)预先知道哪些文章被标记为快照?

非常感谢。

0 投票
1 回答
483 浏览

sql-server - 我无法为快照复制添加新发布

我将在 sql server 2008 R2 数据库实例上创建快照复制,但是在复制节点上,在本地发布时,我正在使用新发布子菜单,我收到此错误消息:

新建发布向导

SQL Server 无法连接到服务器“192.168.1.7”。

如需帮助,请单击: http: //go.microsoft.com/fwlink ?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1&EvtSrc=Microsoft.SqlServer.Management.UI.PubWizardErrorSR&EvtID=CantConnect&LinkId=20476


附加信息:

SQL Server 复制需要实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。指定实际的服务器名称“SHAHEDINSTDB02”。(复制。实用程序)

当我使用计算机名连接到 sql server 时,连接后,我再次收到此错误消息,你能请他吗;p 我?