用c#如何查看本机下的所有SQL SERVER2008实例,谢谢

zorroonline 2010-10-13 03:52:04
SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources()可以得到局域网内的所有SQL SERVER服务器实例,如何得到本机的所有SQL SERVER2008实例
...全文
181 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zorroonline 2010-10-13
多谢了
回复
zsh0809 2010-10-13
http://www.zxxblog.com/80
http://blog.csdn.net/lynnlin1122/archive/2008/11/07/3248139.aspx
你参考文章中的抓取方法试试看,不行再给我留言。
回复
zorroonline 2010-10-13
谢谢了,一会把分给你,你能不能帮我再看看如何抓到 “数值数据”,多谢。
回复
zsh0809 2010-10-13
[Quote=引用 17 楼 zorroonline 的回复:]

Instance Names\Sql\ 下的实例中,数据这一项里有2008,但是这一项的值我用c#取不到
[/Quote]
我本地都看不到2008的,我的sql server在服务器上呢。

不过注册表里的项基本都是能抓到的。
回复
zorroonline 2010-10-13
Instance Names\Sql\ 下的实例中,数据这一项里有2008,但是这一项的值我用c#取不到
回复
zsh0809 2010-10-13
[Quote=引用 14 楼 zorroonline 的回复:]

注册表中的数据项有,但是我用C#取不到
路径里没有
[/Quote]
恩,我刚刚也去看了,那个100/90的项里面没有区分Instance name。
回复
zorroonline 2010-10-13
你本地能帮我试试吗
回复
zorroonline 2010-10-13
注册表中的数据项有,但是我用C#取不到
路径里没有
回复
zsh0809 2010-10-13
你看看注册表中哪个路径是表示2008的呢,好像100是2008,90是2005.
回复
zorroonline 2010-10-13
我的本机上有2005和2008,我只需要2008的,能区分出来吗,谢谢
回复
zsh0809 2010-10-13
[Quote=引用 10 楼 zorroonline 的回复:]

上面的路径能保证每台服务器都一样吗,还有如何区分是SQL 2008,谢谢
[/Quote]
那是注册表里的路径,应该是都一样的。
回复
zorroonline 2010-10-13
上面的路径能保证每台服务器都一样吗,还有如何区分是SQL 2008,谢谢
回复
zsh0809 2010-10-13
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
string[] str_server = key.GetValueNames();
string str_hostname = Dns.GetHostName();//取得主机名
for (int i = 0; i < str_server.Length; i++)
{
//str_server[i] = str_hostname + "\\" + str_server[i];//在SQL 实例中加上主机名
Console.WriteLine(str_server[i]);
}
回复
zorroonline 2010-10-13
这是获取局域网内的所有数据库服务器实例,我只想获取本机下的所有数据库服务器实例
回复
zsh0809 2010-10-13
如果用的sql 2005 的话这样可以得到
定义一个Conn
Conn.WorkstationId 这个方法可以取到实例名.
回复
zsh0809 2010-10-13
C#枚举所有sql server数据库实例

C# code
DataTable dataSources = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
DataColumn column2 = dataSources.Columns["ServerName"];
DataColumn column = dataSources.Columns["InstanceName"];
DataRowCollection rows = dataSources.Rows;
string[] array = new string[rows.Count];
for (int i = 0; i < array.Length; i++)
{
string str2 = rows[i][column2] as string;
string str = rows[i][column] as string;
if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str))
{
array[i] = str2;
}
else
{
array[i] = str2 + @"\" + str;
}
}
Array.Sort<string>(array);


以上是官方的做法,从 SqlDataSourceConverter 即可得到MS是如何去取得所有数据库服务器的
回复
billpu 2010-10-13
试试看访问注册表
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names
回复
zorroonline 2010-10-13
这是获取所有数据库的实例,我想得到一台机器下所有数据库服务器的实例
回复
billpu 2010-10-13
SELECT Name FROM Master..SysDatabases ORDER BY Name
c#不清楚
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-13 03:52
社区公告
暂无公告