1

我正在尝试构建一个系统,它获取 SQL Server 数据库中一些相关表的快照,将日期时间元素附加到它并存储在不同的数据库中。因此,新数据库包含不同日期时间的数据快照(导致不同的模式)。

我已经在 Sql Server Management Studio 上使用 t-sql 让它工作了。我可以用 C# 编写查询并在两个数据库之间执行吗?我阅读了有关 ADO.NET 的信息,但找不到建立两个 SQL 连接然后执行传输查询的方法。

有没有更有效的方法来做到这一点?我正在使用 Microsoft SQL Server 2012。

4

2 回答 2

0

您应该将查询放在存储过程中。然后从 Management Studio、C# 或任何其他程序/接口调用是微不足道的。一个简单的例子:

CREATE PROCEDURE dbo.foo
AS
BEGIN
  SET NOCOUNT ON;

  -- your query
END
GO

然后从 C#(假设存储过程不返回任何结果):

SqlConnection conn = new SqlConnection("Your Connection String");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "dbo.foo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

这不是一个详尽的代码示例(没有错误处理、处置等),只是提供一个想法。

编辑

您应该在两个 SQL Server 实例之间创建一个链接服务器。然后您的查询可以说如下:

SELECT * INTO [linkedserver].database.dbo.tablename
  FROM dbo.whatever
  -- WHERE ... ;

这将比将数据拉入 C# 更有效。

于 2012-06-22T12:32:16.423 回答
0

您可能应该开始阅读有关 ETL 的 Wikipedia 页面

另外,如果你想在纯 C# 中执行 ETL,你可以看看Rhino ETL 之类的东西。

于 2012-06-22T12:58:55.047 回答