none
创建一个windows服务,访问别的机器上的数据库时总是出错 RRS feed

答案

  • 现在能连接上了,但是读取系统文件夹window下system32下的配置xml文件出错,无论怎么该就是读取不了.

    谢谢你这么热心

    是把连接字符串直接写到代码里能连上,读取配置文件仍然出错


    是无法打开文件,还是打开文件使用的路径错了?

    你打开文件用的是全路径名称吗?

    我是这么做的,我把*.config文件和应用程序放置在同一目录下,当我要读取 *.config 时,我用如下的代码:

    Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
          Assembly hostAssembly = assemblies.FirstOrDefault(o => o.FullName.Contains("your application name"));
    
          ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
          configMap.ExeConfigFilename = hostAssembly.Location + ".config";
          Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
    • 已标记为答案 zcy. _ 2010年7月8日 1:13
    2010年7月8日 0:54

全部回复

  • 你好!

         请问具体是什么错误信息?


    周雪峰
    2010年7月7日 7:34
    版主
  • System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
       在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       在 System.Data.SqlClient.SqlConnection.Open()
       在 WindowsService1.Service1.timer1_Elapsed(Object sender, ElapsedEventArgs e) 位置 F:\DOC\IsOnline\WindowsService1\Service1.cs:行号 41



    windows服务部能访问其他机器上的数据库吗?
    2010年7月7日 8:14
  • 1.检查你的sql server是否可以远程连接么?

    2.检查你部署服务机器是否能够访问sql server服务器。(网络问题,可以通过ping ip和telnet sql server的端口号检查)

    检查完成在尝试连接。


    family as water
    2010年7月7日 8:23
  • 可以,用asp.net调用那个方法可以访问远程数据库,用windows服务调用那个方法不行.
    2010年7月7日 8:27
  • 你的连接字符串使用的是windows集成安全吗?
    2010年7月7日 9:13
  • 连接字符串:"Data Source=192.168.0.20\feng;Initial Catalog=zcy;User ID=sa"

    密码为空

    2010年7月7日 9:23
  • 连接字符串:"Data Source=192.168.0.20\feng;Initial Catalog=zcy;User ID=sa"

    密码为空


    Data Source=192.168.0.20;Initial Catalog=zcy;User ID=sa

     

    把 \feng 去掉。

    2010年7月7日 9:26
  • 连接字符串:"Data Source=192.168.0.20\feng;Initial Catalog=zcy;User ID=sa"

    密码为空


    Data Source=192.168.0.20;Initial Catalog=zcy;User ID=sa

     

    把 \feng 去掉。

    目标电脑上有两个数据库实例,一个是2000的,一个是2005的,我用的192.168.0.20\feng是2000的
    2010年7月7日 9:32
  • 你的windows服务是以什么用户启动的?
    2010年7月7日 9:39
  • 你的windows服务是以什么用户启动的?
    Account:LocalSystem
    2010年7月7日 9:46
  • 连接字符串是写在配置文件,还是代码里的?
    2010年7月7日 9:59
  • 写在window32文件下的一个自己创建的xml文件里
    2010年7月7日 10:19
  • 写在window32文件下的一个自己创建的xml文件里


    请检查你是否真的从配置文件中读取到“Data Source=192.168.0.20;Initial Catalog=zcy;User ID=sa” 该连接字符串,并用它来Open数据库连接。

     

    2010年7月7日 11:25
  • 现在能连接上了,但是读取系统文件夹window下system32下的配置xml文件出错,无论怎么该就是读取不了.

    谢谢你这么热心

    2010年7月7日 11:52
  • 现在能连接上了,但是读取系统文件夹window下system32下的配置xml文件出错,无论怎么该就是读取不了.

    谢谢你这么热心

    是把连接字符串直接写到代码里能连上,读取配置文件仍然出错
    2010年7月7日 11:53
  • 现在能连接上了,但是读取系统文件夹window下system32下的配置xml文件出错,无论怎么该就是读取不了.

    谢谢你这么热心

    是把连接字符串直接写到代码里能连上,读取配置文件仍然出错


    是无法打开文件,还是打开文件使用的路径错了?

    你打开文件用的是全路径名称吗?

    我是这么做的,我把*.config文件和应用程序放置在同一目录下,当我要读取 *.config 时,我用如下的代码:

    Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
          Assembly hostAssembly = assemblies.FirstOrDefault(o => o.FullName.Contains("your application name"));
    
          ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
          configMap.ExeConfigFilename = hostAssembly.Location + ".config";
          Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
    • 已标记为答案 zcy. _ 2010年7月8日 1:13
    2010年7月8日 0:54
  • 现在能连接上了,但是读取系统文件夹window下system32下的配置xml文件出错,无论怎么该就是读取不了.

    谢谢你这么热心

    是把连接字符串直接写到代码里能连上,读取配置文件仍然出错


    是无法打开文件,还是打开文件使用的路径错了?

    你打开文件用的是全路径名称吗?

    我是这么做的,我把*.config文件和应用程序放置在同一目录下,当我要读取 *.config 时,我用如下的代码:

    Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
       Assembly hostAssembly = assemblies.FirstOrDefault(o => o.FullName.Contains("your application name"));
    
       ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
       configMap.ExeConfigFilename = hostAssembly.Location + ".config";
       Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
    
    谢谢
    2010年7月8日 1:14