LinqPad在同一台服务器上连接两个azure数据库

时间:2015-05-04 17:37:50

标签: c# azure-sql-database linqpad

根据FAQ(1),我可以通过多种方式向现有连接添加其他数据库。我已经尝试过所有这些,但没有一个适用于SQL Azure。

事实上,SQL Azure作为提供程序,甚至不包括“包含其他数据库”选项。

有人可以告诉我LinqPad连接两个数据库的解决方法吗?我正在尝试创建一个迁移linqpad脚本,以将数据从一个数据库同步到另一个数据库。

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

1 个答案:

答案 0 :(得分: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();
    }
}

简单选择示例:

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();
    }
}