如何在SQL Server中同时更新多个数据库?
我有7个数据库。数据库具有相同的表。我想在编辑行或添加新行时同时更新所有行。如果其中一个事务不起作用,它将不会被更新如何在SQL Server中同时更新多个数据库?,sql,sql-server,database,Sql,Sql Server,Database,我有7个数据库。数据库具有相同的表。我想在编辑行或添加新行时同时更新所有行。如果其中一个事务不起作用,它将不会被更新 如何更新 更新或修改单个表,并在不同数据库中使用相同的表。这比试图在7个数据库中的7个表之间保持数据一致性要好 我认为触发器可以在下面的sudo代码中帮助您,并在失败时使用回滚事务 USE Test;--Test is one db GO CREATE TRIGGER afterInsert ON table AFTER INSERT AS BEG
如何更新 更新或修改单个表,并在不同数据库中使用相同的表。这比试图在7个数据库中的7个表之间保持数据一致性要好 我认为触发器可以在下面的sudo代码中帮助您,并在失败时使用回滚事务
USE Test;--Test is one db
GO
CREATE TRIGGER afterInsert ON table AFTER INSERT
AS
BEGIN
IF @@rowcount = 0 RETURN;
UPDATE Test2.[schema_name(default schema is dbo)].Clients --here test2 is another db
SET col = col +1 -- or whatever it should be
FROM Test2.[schema_name(default schema is dbo)].Clients c
INNER JOIN inserted i ON ([your join condition])
END;
GO
为什么在不同的数据库中需要具有相同数据的相同表。我想你需要重新设计你的应用程序和数据库。 可能的解决办法:
您可以将所有服务器/数据库添加到已注册服务器窗格(SQL Management Studio(2016):Ctrl+Alt+G显示)中的一个组中。根据当地的服务团体 然后在新组上按右键并选择“新建查询”
执行查询时,它将在选定组中的所有服务器上运行 为什么在服务器中有重复的表?这些表实际上是不同的表,恰好包含相同的数据。对吗?分布式事务?尝试使用数据库名称;编写更新语句,然后GO跨数据库事务不使用分布式事务不使用相同的数据,每个国家的数据库都有不同的数据您仍然可以使用跨数据库事务。使用多部分对象标识符访问不同数据库[数据库名称].[架构名称].[对象名称]中的对象。这是唯一值得考虑的答案。将数据分离到具有相似/相同模式的多个数据库中肯定有充分的理由。
begin try
begin transaction;
update db1..table1 set field1 = value1, field2 = value2 where key = @key;
update db2..table1 set field1 = value1, field2 = value2 where key = @key;
...
update dbN..table1 set field1 = value1, field2 = value2 where key = @key;
commit transaction;
end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage;
if @@trancount > 0
rollback transaction;
end catch