I have two databases in my SQL Server with each database containing 1 single table as of now.

I have 2 database like below :

1) Db1 (MySQL)

2) Db2 (Oracle)

Now what I want to do is fill my database table of SQL Server db1 with data from Db1 from MySQL like below :

```
Insert into Table1 select * from Table1

```

> 
> Select \* from Table1(Mysql Db1) - Data coming from Mysql database
> 
> 
> Insert into Table1(Sql server Db1) - Insert data coming from Mysql
>  database considering same schema
> 
> 
> 

I don't want to use sqlbulk copy as I don't want to insert chunk by chunk data. I want to insert all data in 1 go considering millions of data as my operation is just not limited to insert records in database. So user have to sit wait for a long like first millions of data inserting chunk by chunk in database and then again for my further operation which is also long running operation.

So if I have this process speed up then I can have my second operation also speed up considering all records are in my 1 local sql server instance.

Is this possible to achieve in a C# application?

**Update:** I researched about Linked server as **@GorDon Linoff** suggested me that linked server can be use to achieve this scenario but based on my research it seems like i cannot create linked server through code.

I want to do this with the help of **ado.net**.

This is what I am trying to do exactly:

Consider I have 2 different client RDBMS with 2 database and some tables in client premises.

So database is like this :

```
Sql Server :

Db1

Order
Id      Amount
1       100
2       200
3       300
4       400

Mysql or Oracle :

Db1:

Order
Id      Amount
1       1000
2       2000
3       3000
4       400

```

Now I want to compare Amount column from source (SQL Server) to destination database (MySQL or Oracle).

I will be use to join this 2 different RDBMS databases tables to compare Amount columns.

In C# what I can do is like fetch chunk by chunk records in my **datatable (in memory)** then compare this records with the help of code but this will take so much time considering millions of records.

So I want to do something better than this.

Hence I was thinking that i bring out this 2 RDBMS records in my local SQL server instance in 2 databases and then create join query joining this 2 tables based on Id and then take advantage of DBMS processing capability which can compare this millions of records efficiently.

Query like this compares millions of records efficiently :

```
select SqlServer.Id,Mysql.Id,SqlServer.Amount,Mysql.Amount from SqlServerDb.dbo.Order as SqlServer
Left join MysqlDb.dbo.Order as Mysql on SqlServer.Id=Mysql.Id
where SqlServer.Amount != Mysql.Amount

```

Above query works when I have this 2 different RDBMS data in my local server instance with database : SqlServerDb and MysqlDb and this will fetch below records whose amount is not matching :

So I am trying to get those records from source(Sql server Db) to MySQL whose Amount column value is not matching.

**Expected Output :** 

```
Id      Amount
1       1000
2       2000
3       3000

```

So there is any way to achieve this scenario?