如何在其他服务器上检索数据库

时间:2012-02-26 13:02:17

标签: c# asp.net sql-server

我想检索位于另一台服务器上的SQL Server数据库上的表 我想将检索到的数据存储到我自己的SQL Server数据库中。

我该怎么做?

非常感谢

5 个答案:

答案 0 :(得分:0)

我在本文中找到的最简单,最好的方法之一,这可能很容易解决您的问题

SQL SERVER – 2008 – Copy Database With Data – Generate T-SQL For Inserting Data From One Table to Another Table

答案 1 :(得分:0)

如果您拥有大量数据,最快的方法之一是名为bcp的工具。 它允许您将数据导出和导入到文件。因此,您可以从源数据库导出,然后导入到目标。它非常快。

答案 2 :(得分:0)

如果您的目标是SQL 2008数据库,并且您已设置使用C#连接到源并获取数据,则可以使用Table参数。 .NET中的DataTable可直接映射到SQL Server中的用户定义表类型。

以下是关于它的SO帖子:

How to pass User Defined Table Type as Stored Procedured parameter in C#

在目标数据库中定义自定义表类型

 create type MyCustomTable as Table 
 ( 
     Field1 int,
     Field2 varchar(50), 
     Field3 decimal(18,0) 
 ) 

概念是将源中的所有数据读入数据表。然后,您将使用SqlParameter在目标服务器上执行存储过程或可能的文本查询。通过使用接受表参数的存储过程,您可以执行以下操作:

 CREATE PROCEDURE dbo.BulkCopyData
 (
      @SourceData MyCustomTable readonly --readonly has to be there, Table params have to be readonly as parameters

 ) AS
 BEGIN

      INSERT INTO dbo.DestinationTable
      (
           Field1,
           Field2,
           Field3
           --more fields
      )
      SELECT Field1,Field2,Field3 FROM @SourceData


 END

当您执行命令时在C#中:

DataTable dt = new DataTable(); //Go get the data from your source here


 SqlConnection conn = new SqlConnection("....");
 conn.Open();
 SqlCommand cmd = new SqlCommand("dbo.BulkCopyData",conn)
 cmd.Parameters.Add( new SqlParameter("SourceData", SqlDbType.Structured){ TypeName = "dbo.MyCustomTable ", Value = dt});
 cmd.Parameters[0].
 cmd.ExecuteNonQuery();

答案 3 :(得分:0)

您还可以在SQL上使用openrowset函数,并使用SQL代码调用/查询远程服务器。默认情况下不启用此功能(必须使用SP_CONFIGURE存储过程并启用远程查询才能使用此功能)。以下是一些示例链接。

http://msdn.microsoft.com/en-us/library/ms190312.aspx

当您需要知道如何设置配置时,请告诉我;)

答案 4 :(得分:0)

使用SQL Server管理工作室

连接到您的数据库

转到服务器对象 - >添加新的链接服务器

然后你可以使用另一个表作为select * from LinkedServerName.DBName.dbo.TableName