2015-05-04 2 views
1

В FAQ (1) я могу добавить дополнительные базы данных к существующему соединению несколькими способами. Я пробовал их все, и никто не работает для SQL Azure.LinqPad соединяет две базы данных azure на одном сервере

Фактически, SQL Azure как поставщик, даже не включает в себя параметр «Включение дополнительных баз данных».

Может кто-нибудь скажет мне обходной путь для LinqPad для подключения двух баз данных? Я пытаюсь создать миграционный скрипт linqpad для синхронизации данных из одной базы данных в другую.

  1. http://www.linqpad.net/FAQ.aspx#cross-database

ответ

2

Это терпит неудачу, потому что SQL Azure не позволяет создавать связанные серверы. См Can linked server providers be installed on a SQL Azure Database instance?

Если вы просто хотите скопировать данные из одной базы данных в другую, а схемы одинаковы, обходной путь, чтобы создать отдельное соединение, используя один и тот же класс TypedDataContext:

void Main() 
{ 
    CopyFrom<Customer>("<source connection string>"); 
} 

void CopyFrom<TTable> (string sourceCxString) where TTable : class 
{ 
    // Create another typed data context for the source. Note that it must have compatible schema: 
    using (var sourceContext = new TypedDataContext (sourceCxString) { ObjectTrackingEnabled = false }) 
    { 
     // Delete the rows currently in our table: 
     ExecuteCommand ("delete " + Mapping.GetTable (typeof (TTable)).TableName); 

     // Insert the rows from the source table into the target table and submit changes: 
     GetTable<TTable>().InsertAllOnSubmit (sourceContext.GetTable<TTable>()); 
     SubmitChanges(); 
    } 
} 

Simple Select Пример:

void Main() 
{ 
    SimpleSelect("<your conn string>"); 
} 

void SimpleSelect (string sourceCxString) 
{ 
    // Create another typed data context for the source. Note that it must have compatible schema: 
    using (var sourceContext = new TypedDataContext (sourceCxString) { ObjectTrackingEnabled = false }) 
    { 
     sourceContext.Assignee.OrderByDescending(a => a.CreateTimeStamp).Take(10).Dump(); 
     Assignee.OrderByDescending(a => a.CreateTimeStamp).Take(10).Dump(); 
    } 
} 
+0

* Невозможно выполнить выбор текста: тип или пространство имен имя «TypedDataContext» не может быть найден (нажмите клавишу F4, чтобы добавить с помощью директивы или ссылка на сборку) * вы знаете, что это пространство имен находится под? Кажется, мне не хватает ссылки. – user1477388

+0

Примечание: Я также попробовал 'var ctx = new MyActualDatabaseName (" ... ")' думать, возможно, это то, что вы имели в виду. – user1477388

+0

Вам необходимо установить соединение для этого запроса. Установите его в базу данных, в которую вы хотите скопировать данные. –