gpt4 book ai didi

sql - 如何合并两个不同服务器上的两个数据库?

转载 作者:行者123 更新时间:2023-12-02 01:36:37 25 4
gpt4 key购买 nike

我有两个不同的数据库,客户端一个从 .MDF 文件附加到 .\SQLEXPRESS 服务器。主服务器在另一台名为 COMPUTER_NAME 的计算机上的服务器上运行。

我想使用 C# 合并这些以运行 .SQL 文件。我将在下面粘贴我的代码以供引用,但基本上我的问题是,如果我使用

连接到服务器
 string sqlConnectionString = @"Server=.\SQLEXPRESS; Trusted_Connection=True";

然后我在 COMPUTER_NAME 上找不到数据库。如果我使用

 string sqlConnectionString = @"Server=COMPUTER_NAME; Trusted_Connection=True";

它将在 COMPUTER_NAME 的 C: 驱动器上查找我的 .MDF 文件,而不是本地计算机。

如何连接到不同服务器上的这两个数据库?

附加信息:

我正在使用的 SQL 脚本。当两个数据库都在同一台服务器上时,这可以完美地工作,但我不能再这样做了。

CREATE DATABASE ClientDB  
ON (Filename = 'C:\Clayton.mdf')
, (Filename = 'C:\Clayton_log.ldf')
FOR ATTACH;

-- update the client from the master
MERGE [ClientDB].[dbo].[table] trgt
using [MasterDB].[dbo].[table] src
ON trgt.id = src.id

WHEN matched AND trgt.lastmodified <= src.lastmodified THEN -- if master row is newer
UPDATE SET trgt.[info] = src.[info], ... -- update the client

WHEN NOT matched BY source -- delete rows added by client
THEN DELETE

WHEN NOT matched BY target -- insert rows added by master
THEN INSERT ( [info], ... ) VALUES (src.[info], ... );


-- close all connections to database
ALTER DATABASE ClientDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

-- detach database
EXEC sp_detach_db 'ClientDB', 'true';

然后我像这样使用 C# 运行它:

 string sqlConnectionString = @"Server=.\SQLEXPRESS; Trusted_Connection=True";

string script = File.ReadAllText(Environment.CurrentDirectory + @"\MergeTotal.sql");
SqlConnection conn = new SqlConnection(sqlConnectionString);

IEnumerable<string> commandStrings = Regex.Split(script, @"^\s*GO\s*$",
RegexOptions.Multiline | RegexOptions.IgnoreCase);

conn.Open();
foreach (string commandString in commandStrings)
{
if (commandString.Trim() != "")
{
using (var command = new SqlCommand(commandString, conn))
{
command.ExecuteNonQuery();
}
}
}

我不关心整个过程是发生在 .SQL 还是 C# 中,只要它具有预期的效果即可。

提前感谢您提供任何指导或建议。

最佳答案

如果需要的话,链接服务器将有助于您同时访问数据。不过,如果您希望将数据合并在一起,我建议您查看 sp_generate_merge为您将数据拉入合并脚本(移动数据非常方便)。另请参阅我关于生成合并数据的问题 here .

关于sql - 如何合并两个不同服务器上的两个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com