C#多个SQL服务器选择

时间:2013-05-24 05:41:35

标签: c# sql sql-server select datagridview

我想连接到SQL服务器,并使用下图中的SQL语句从多个表中选择数据。 SQL连接信息存储在表中。最后,我想显示datagridview

中的所有数据

enter image description here

2 个答案:

答案 0 :(得分:1)

您无法在同一连接中的不同服务器上运行sql查询。你可以创建一个循环;对于每次迭代,您将更改连接字符串,执行查询并将结果加载到数据表。

List<string> lstSQLConStr = new List<string>();
lstSQLConStr.Add(@"Server=myServerAddress1;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress2;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress3;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress4;Database=myDataBase;User Id=myUsername;Password=myPassword;");

string cmd = "SELECT * FROM BOOKS1 UNION SELECT * FROM BOOKS2 UNION SELECT * FROM BOOKS3";

SqlConnection sqlCon = null;
SqlCommand sqlCmd = null;

DataTable dtResult = new DataTable();

for (int i = 0; i < lstSQLConStr.Count; i++)
{
    using (sqlCon = new SqlConnection(lstSQLConStr[i]))
    {
        sqlCon.Open();

        using (sqlCmd = new SqlCommand(cmd, sqlCon))
        {
            sqlCmd.CommandType = CommandType.Text;

            using (SqlDataReader dataReader = sqlCmd.ExecuteReader())
            {
                dtResult.Load(dataReader);
            }
        }
    }
}

//here dtResult contains all results.

答案 1 :(得分:0)

您可以使用链接服务器。使用链接服务器,您可以按照格式

从一个查询访问不同的服务器数据库
     select <server>.<database>.<schema>.<table>

此外,您可以使用OPENROWSet方法,您可以在其中指定服务器名称,用户名密码并在那里编写SQL查询。