我用C#写的想调用网络上所有的SQLServer服务器,结果出现"接口 SQLDMO.NameList 的 QueryInterface 失败" machine.config文件中改成userName="system" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很可能是你SQL版本的问题.你自己查一查.如果是Sql 2000的话,检查一下你的版本. SELECT @@VERSION 如果版本低于8.00.534,,要安装SP2.http://www.microsoft.com/sql/downloads/2000/sp2.asp 看一下你的SQL版本吧,好像要SP3才可以呀cmbList.Items.Clear(); SQLDMO.ApplicationClass app = new SQLDMO.ApplicationClass(); SQLDMO.NameList list = app.Application.ListAvailableSQLServers(); string server; for(int i=0;i<list.Count;i++) { server = list.Item(i); if(server==null) continue; cmbList.Items.Add(server); } 我的sql server就还没打补丁, 可以是不是你的系统比较乱了? SQL SERVER 要装上SP2 如果要在下拉菜单中添加上局域网内的所有SQL SERVER服务器的话,可以调用isql.exe来完成这个工作,而不用装什么SP2代码如下:private void ListAllServer(){string fileName = "C:\\Program Files\\Microsoft SQL Server\\80\\Tools\\Binn\\isql.exe";if(System.IO.File.Exists(fileName)){System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo(fileName,"-L");processStartInfo.UseShellExecute = false;processStartInfo.CreateNoWindow = true;processStartInfo.RedirectStandardOutput = true;processStartInfo.RedirectStandardError = true;System.Diagnostics.Process process = System.Diagnostics.Process.Start(processStartInfo);process.WaitForExit();cboServerList.Items.Clear();int line = 1;string server = null;while(process.StandardOutput.Peek() > -1){server = process.StandardOutput.ReadLine().Trim();line +=1;if ( line > 6){cboServerList.Items.Add(server);}server = null;}}cboServerList.Items.Remove(System.Environment.MachineName);cboServerList.Items.Add("localhost");} 请教三层架构之数据层的一个问题。 系统找不到指定的文件。 (异常来自 HRESULT:0x80070002) 挑战极限哈,关于I/O 和内存哈,分多的很 内部 .Net Framework 数据提供程序错误 30。 使用ComponentOne Stdio.NET 2005v3版的问题 也来问个问题,看看有人会吗? 在c#的Web应用程序中,退出怎么写,close不行 送分给Pinbor,其他人别进! WPF,控件是在什么时候初始化的? lisoft2002(lisoft2002) 进来拿分(100) ADSL+网站 如何在画线时不让别的控件档住线————求教
SELECT @@VERSION
如果版本低于8.00.534,,要安装SP2.
http://www.microsoft.com/sql/downloads/2000/sp2.asp
cmbList.Items.Clear(); SQLDMO.ApplicationClass app = new SQLDMO.ApplicationClass();
SQLDMO.NameList list = app.Application.ListAvailableSQLServers();
string server;
for(int i=0;i<list.Count;i++)
{
server = list.Item(i);
if(server==null)
continue;
cmbList.Items.Add(server);
}
是不是你的系统比较乱了?
如果要在下拉菜单中添加上局域网内的所有SQL SERVER服务器的话,可以调用isql.exe来完成这个工作,而不用装什么SP2
代码如下:private void ListAllServer()
{
string fileName = "C:\\Program Files\\Microsoft SQL Server\\80\\Tools\\Binn\\isql.exe";
if(System.IO.File.Exists(fileName))
{
System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo(fileName,"-L");
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;
System.Diagnostics.Process process = System.Diagnostics.Process.Start(processStartInfo);
process.WaitForExit();
cboServerList.Items.Clear();
int line = 1;
string server = null;
while(process.StandardOutput.Peek() > -1)
{
server = process.StandardOutput.ReadLine().Trim();
line +=1;
if ( line > 6)
{
cboServerList.Items.Add(server);
}
server = null;
}
}
cboServerList.Items.Remove(System.Environment.MachineName);
cboServerList.Items.Add("localhost");
}