我想检索位于另一台服务器上的SQL Server数据库上的表 我想将检索到的数据存储到我自己的SQL Server数据库中。
我该怎么做?
非常感谢
答案 0 :(得分:0)
我在本文中找到的最简单,最好的方法之一,这可能很容易解决您的问题
答案 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