我的查询如下:
INSERT INTO [NewModel.Persistence.PersistencyContext].[dbo].[NewPerson] (
[Name],
[Location],
[LastUpdate]
)
SELECT
MIN([name]),
MIN([location]),
MIN([time])
FROM [OldModel.Persistence.PersistencyContext].[dbo].[ExPerson]
GROUP BY name
如何定义连接字符串以及执行此查询的c#代码是什么?
答案 0 :(得分:2)
这里有两件事。
首先,如果您的数据库位于同一个sql server实例上(实际上是在sql实例下运行的同一个数据库的两个不同版本),那么您将不需要拥有链接服务器。
但是,如果它们在不同的服务器(可能是不同的机器)上运行,那么您需要按照Oded和David的说明链接它们。
我会创建一个存储过程并根据需要从代码中调用它。
CREATE PROC usp_AddMyRecords
AS
BEGIN
INSERT INTO [NewModel.Persistence.PersistencyContext].[dbo].[NewPerson] (
[Name],
[Location],
[LastUpdate]
)
SELECT
MIN([name]),
MIN([location]),
MIN([time])
FROM [OldModel.Persistence.PersistencyContext].[dbo].[ExPerson]
GROUP BY name
END
C#代码调用程序:
SqlConnection dbConnection = new SqlConnection(ConfigurationManager.ConnectionStrings
[YOUR_CONNECTION_STRING_NAME].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "usp_AddMyRecords";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = dbConnection;
conn.Open();
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
如果您的数据库是SQL Server,则需要在NewModel和OldModel的服务器之间创建链接服务器连接。您需要运行sp_addlinkedserver
存储过程(MSDN documentation here)。
正如Oded的评论所述,您对NewModel的连接字符串将只是一个普通的连接字符串(server = NewModelServer; Initial Catalog = NewModel; UID =; PWD =;)并且只是与用户连接(SQL Server身份验证或集成安全性) )可以访问两个服务器。
希望这有帮助!