您应该将查询放在存储过程中。然后从 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# 更有效。