我正在研究一个SQL Server监视项目。在此,我想从计算机上安装的所有SQL Server实例中获取数据。为此,我编写了一个CLR存储过程,其中数据来自两个不同的SqlDataReader对象,并且我想合并这两个datareder对象。
是否可以合并两个SQLdatareader对象?
以下是我面临此问题的情况:
SqlConnection conn = new SqlConnection("ConnectionSting of 1st SQLServerInstance")
string query = "select dbid,uid,cpu from [master].[sys].sysprocesses";
SqlCommand SelectCmmand = new SqlCommand(query, conn);
SqlDataReader rd1;
conn.Open();
rd1 = SelectCmmand.ExecuteReader();
conn.Close();
conn = new SqlConnection("ConnectionSting of 2nd SQLServerInstance")
SqlCommand SelectCmmand = new SqlCommand(query, conn);
SqlDataReader rd2;
conn.Open();
rd2 = SelectCmmand.ExecuteReader();
conn.Close();
SqlPipe sp;
sp = SqlContext.Pipe;
sp.Send(?????);
Run Code Online (Sandbox Code Playgroud)
现在,sp.Send(??)方法希望将SQLDataReader对象作为参数,在这里我要发送从两个不同的连接字符串获取的上述数据。
那么,我应该如何合并/合并rd1和rd2?
我有以下代码将在SQL SERVER 2008R2中的每个数据库上触发查询,
public DataTable GetResultsOfAllDB(string query)
{
SqlConnection con = new SqlConnection(_ConnectionString);
string locleQuery = "select name from [master].sys.sysdatabases";
DataTable dtResult = new DataTable("Result");
SqlCommand cmdData = new SqlCommand(locleQuery, con);
cmdData.CommandTimeout = 0;
SqlDataAdapter adapter = new SqlDataAdapter(cmdData);
DataTable dtDataBases = new DataTable("DataBase");
adapter.Fill(dtDataBases);
// This is implemented for sequential
foreach (DataRow drDB in dtDataBases.Rows)
{
locleQuery = " Use [" + Convert.ToString(drDB[0]) + "]; " + query;
cmdData = new SqlCommand(locleQuery, con);
adapter = new SqlDataAdapter(cmdData);
DataTable dtTemp …Run Code Online (Sandbox Code Playgroud)