выполнить SQL-запрос, используя 2 базы данных - PullRequest
0 голосов
/ 22 февраля 2011

Мой запрос выглядит так:

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 # для выполнения этого запроса?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Здесь происходят две вещи.

Во-первых, если ваши базы данных находятся на одном и том же экземпляре сервера sql (по сути, это две разные версии одной и той же базы данных, работающие под экземпляром sql), вам не нужно иметь связанный сервер.

Однако, если они работают на разных серверах (и, возможно, на разных машинах), вам нужно будет связать их, как указано Одедом и Дэвидом.

Я бы создал хранимую процедуру и вызывал ее из кода по мере необходимости.

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();
0 голосов
/ 23 февраля 2011

Если вашей базой данных является SQL Server, вам необходимо создать соединение между сервером NewModel и OldModel.Вам нужно будет выполнить хранимую процедуру sp_addlinkedserver (документация MSDN здесь ).

Как говорится в комментарии Одеда, ваша строка соединения с NewModel будет просто обычной строкой соединения (server = NewModelServer; Initial Catalog = NewModel; UID =; PWD =;) и будет просто соединяться с пользователем (аутентификация SQL Server).или Integrated Security), который может обращаться к обоим серверам.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...