使用c#中的IDataReader从数据库中提取与特定业务单元相对应的主机名列表,但无法找出问题所在。我猜测SQL语句中的参数太多,或者可能不应该使用这里的ExecuteReader方法。我无法在目标数据库中创建SP,因此只能以其他方式运行查询。任何帮助都将不胜感激。
public static IDataReader GetCETHostsList()
{
string mySQL = @"SELECT distinct(dbo.Infrastructure.Hostname) dbo.Application_Infrastructure
INNER JOIN dbo.Applications ON dbo.Application_Infrastructure.ID = dbo.Applications.ID
INNER JOIN dbo.Infrastructure ON dbo.Application_Infrastructure.InfrastructureID = dbo.Infrastructure.InfrastructureId
WHERE Unit is not null
AND dbo.Applications.Unit like '%Terminal%'
AND (dbo.Infrastructure.Hostname like '%ST%' or dbo.Infrastructure.Hostname like '%TR%' )";
return DatabaseFactory.CreateDatabase("myDB").ExecuteReader(mySQL);
}
您缺少FROM
关键字。
一般来说,如果您使用嵌入C#程序中的SQL,那么如果您先在Query Analyzer/SQL Management Studio或其他程序中运行SQL,则会容易得多。MS SQL Express是免费的;或者VS Pro也可以运行sql查询。