我正在尝试构建一个系统,该系统接收SQL Server数据库中的一些相关表的快照,向其附加日期时间元素并存储在不同的数据库中。因此,新数据库包含不同日期时间的数据快照(导致不同的模式)。
我已经在Sql Server Management Studio上使用t-sql了解它。我可以用C#编写查询并在两个数据库之间执行吗?我读到了有关ADO.NET但无法找到建立两个SQL连接然后执行传输查询的方法。
有更有效的方法吗?我正在使用Microsoft SQL Server 2012。
答案 0 :(得分: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实例之间创建linked server。然后你的查询可以说:
SELECT * INTO [linkedserver].database.dbo.tablename
FROM dbo.whatever
-- WHERE ... ;
这比将数据拉入C#要高效得多。
答案 1 :(得分:0)
你应该开始阅读the Wikipedia page about ETL。
此外,如果您希望perform ETL in pure C#,可以查看Rhino ETL等内容。