| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4622 人关注过本帖
标题:[求助]怎样用C#获取本机数据库实例名啊?
只看楼主 加入收藏
fmricky
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-6-7
收藏
 问题点数:0 回复次数:7 
[求助]怎样用C#获取本机数据库实例名啊?
一直困惑  如何得到本机数据库的实例名  SQL Server 2005的连接字符串需要实例名才可以

方便的话给我发个E-MAIL吧    fmricky@    谢谢!!!
















谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[[it] 本帖最后由 fmricky 于 2008-8-18 15:10 编辑 [/it]]
搜索更多相关主题的帖子: 数据库 实例 获取 
2008-08-18 22:07
fmricky
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-6-7
收藏
得分:0 
没人回答吗?    自己顶起来
2008-08-19 19:21
wzg0319
Rank: 5Rank: 5
等 级:职业侠客
帖 子:68
专家分:305
注 册:2007-9-12
收藏
得分:0 
--转:


使用SQLDMO和T-SQL列出所有的实例

--王成辉翻译整理,转贴请注明出自微软BI开拓者www.
--原帖地址


微软报告的Bug:
SQLDMO.Application对象的方法ListAvailableServers会引起0x800A000E错误。
当从ASP页面执行SQLDMO.Application对象的方法ListAvailableServers,也许会发生下面的错误消息:

Microsoft SQL-DMO (0x800A000E)
[SQL-DMO]Not enough storage is available to complete this operation.

然而,有一些方法可以解决这个问题以得到实例即在ASP上使用客户端脚本。

这里有一个存储过程,我们将准备列出所有可用的实例,所以在你的Web应用程序里很容易展示它们。



CREATE PROCEDURE EnumerateSQLServers
AS
/*
存储过程名称: EnumerateSQLServers
作者            : Srdjan Josipovic
日期            : 2002-06-19
目的            :使用SQLDMO和TSQL列出所有可用的实例
翻译整理      :王成辉

*/

DECLARE @retval int
DECLARE @result varchar(500)
DECLARE @object int
DECLARE @objectList int
DECLARE @src varchar(254)
DECLARE @desc varchar(255)
DECLARE @resultsCount int
DECLARE @counter int
DECLARE @method varchar(255)

--创建SQLDMO对象
EXEC @retval = sp_OACreate 'SQLDMO.Application', @object OUT

--检查对象是否创建成功
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
    SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END
--调用方法ListAvailableServers() , 为SQLDMO.NameList得到Object_ID
EXEC @retval = sp_OAMethod @object , 'ListAvailableSQlServers()' , @objectList OUT
-- 是否有错误?
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
    SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END
--计算局域网里的服务器数量
EXEC @retval = sp_OAGetProperty @objectList , 'Count' , @resultsCount OUT
--再一次进行错误处理
IF @retval <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
    SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
    RETURN
END

--如果有服务器的话,进入处理.....
IF @resultsCount > 0
BEGIN
  SET @counter = 1
  DECLARE @ServersTbl table (ServerID int IDENTITY ,ServerName varchar(255))
  WHILE @counter <= @resultsCount
  BEGIN
    --列出SQL实例:一个名字接一个名字的列出
    SET @method = 'Item(' + convert(varchar(3),@counter) + ')'        
    EXEC @retval = sp_OAGetProperty @objectList ,@method , @result OUT
   
    --将数据存到临时表
    INSERT INTO @ServersTbl (ServerName) SELECT @result
   
    --移到下一条记录
    SET @counter = @counter + 1
  END
END
ELSE
BEGIN
  SET @result = 'No Servers around you'
  INSERT INTO @ServersTbl (ServerName) SELECT @result
END
--释放对象
EXEC @retval = sp_OADestroy @object
IF @retval <> 0
BEGIN
  EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
  SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
  RETURN
END

--好了,可以列出所有可用的实例了 ....
SELECT * FROM @ServersTbl
GO
2008-08-19 20:09
fmricky
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-6-7
收藏
得分:0 
有些晕了  我都没办法通过获取实例名写出连接字符串
怎么去调用一个数据库里的存储过程啊???
2008-08-19 22:53
xyq701830
Rank: 1
来 自:浙江
等 级:新手上路
威 望:2
帖 子:263
专家分:0
注 册:2008-6-24
收藏
得分:0 
利用SqlConnection
SqlCommand
啊.```
// 一般uid和pwd都是sa吧
string strConn = "server=服务器名;uid=sa;pwd=sa;database=数据库名"
SqlConnection mySqlConnection = new  SqlConnection (strConn);
然后再
string strQuery = " select * from ...." //自己写
SqlCommand mySqlCommand = new SqlCommand(strQuery ,mySqlConnection )
然后就可以做了

菜猪猪``
2008-08-19 23:21
fmricky
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-6-7
收藏
得分:0 
  都没理解我意思
在连接SQL2005的数据库时,连接字符串的服务器是要“本地计算机名/数据库实例名”这样的格式,2个都不能缺少,本机计算机名可以用代码获取。
可是数据库实例名该如何获取,我要问的是这个。
2008-08-23 16:52
zhutoudd
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-6-24
收藏
得分:0 
你按ctrl+alt+s,有个数据库连接,你配置好有,看右边的属相,复制下来就ok了

如果你想调用数据库中的存储过程
            SqlCommand comm = new SqlCommand("dbo.存储过程名字", "连接字符串或者是SqlConnection对象");
             = CommandType.StoredProcedure;//应用存储过程
            comm.Parameters.Add("@参数名字", SqlDbType.VarChar, 255).Value = "12345";//如果你的存储过程中有参数用这个。没有省略
2008-08-23 20:17
fjfhnui
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-6-18
收藏
得分:0 
sqldatasoureemunerator 没记错就是这个,单词可能有点拼写错误,枚举局域网所有开启的SQL服务,是个datatable对象

[[it] 本帖最后由 fjfhnui 于 2008-8-24 03:24 编辑 [/it]]
2008-08-24 03:21
快速回复:[求助]怎样用C#获取本机数据库实例名啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025420 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved