开发环境: winXP IIS5.1,VS2008, ASP.net,windows 2008, SQL SERVER2008  (IIS和SQLServer在分别在两台机器上)
※在域内开发,也就是说,两台机器都加入了域。代码大致:把DB中某个表中的数据个数取出(select count(*) from TableA),显示到画面。
在VS2008开发环境中可以正常连接DB,但是发布到IIS中后,在连接(openDB)数据库的时候,出现以下错误。
用的连接的认证方式是windows认证(Integrated Security=SSPI;),SQL SERVER2008的认证设置是混合认证。
connectionString="Server=XXX\SQLSERVER2008;Initial Catalog=AAAMaster;Integrated Security=SSPI; Persist Security Info=False;Connect Timeout=40;用SQL Server认证方式也连接失败。System.Data.SqlClient.SqlException: SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: 名前付きパイプ プロバイダ, error: 40 - SQL Server への接続を開けませんでした)错误信息的意思是,
确立对服务器的连接的时候错误发生了。如果连接到SQL Server 2005 的时候时候这个错误发生了,有SQL Server 的既定的设定不变得准许远程连接的事作为错误的原因的可能性。 (没开对provider:名字附着管子 服务提供商, error:40- SQL Server 的连接) 
通过下面的代码,可以判断当前的用户名。
this.LabelUser.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;IIS环境和VS2008环境,访问web时用的用户名是不一样的。
VS2008:  域名/域用户
IIS环境:   winxp的computer名/APNET在SQLSERVER上,有一个セキュリティ(安全) >> ログイン(登陆)
可以在这里添加用户,目前已经添加了我的域用户了,所以,在VS2008上,可以访问数据库。
但是没有添加我的ASPNET用户,所以不能被SQLServer认证,所以连接数据库失败。
怎么往SQLSERVER添加我的机器的ASPNET用户呢??????????
寻找正在学习SilverLight的朋友!!!
msn:[email protected]

解决方案 »

  1.   

    需要在数据库服务器上启用 SQL Browse服务。另外,数据库的端口设置检查是否正确,并且没有被防火墙阻止
      

  2.   

    命名管道提供程序, error: 40 - 无法打开到SQL Server 的连接
    使用windows和sql server混合认证
    在远程连接里,同时使用TCP/IP和named Pipes,重启SQLserver服务
    防火墙是否阻止了端口
    启动SQL Server Browser服务
    <add key="ConnectionString" value="server=localhost\sqlexpress;uid=sa;pwd=123456;database=master"/>
      

  3.   

    SQL Server 的TCP/IP服务禁止的,打开它重启就行了
      

  4.   

    纠正错误
    IIS环境:   winxp的computer名/APNET 
                                     ↓↓↓
                                     ASPNET  
      

  5.   

    lz需要好好补习一下ASP.NET impersonation和delegation。http://msdn.microsoft.com/en-us/library/ms998351.aspx
      

  6.   


    我刚才把windows防火墙设置为无效(就是关闭防火墙吧。我用的是日文系统,中文系统是什么我忘了),
    可以连接数据库了,并取出数据了。
    也就是说,我的防火墙没有设置好。另外,我的数据库服务器的Sql Server Configuration Manager中的SQL Server Browser服务是实行中状态,
    已经启用了。
      

  7.   

    汇报结果先说一句,感谢各位给我这么多建议,非常的谢谢啊。各位给我的建议我没有都试,现在已经有2个方法可以连接数据库了。
    解决办法1:
        这好像叫伪装,第一次听说。
      在 Web.config 的System.web 标签里设置以下的内容
    <identity impersonate="true" 
              userName="domain\username"
              password="<secure password>"/>
    用户名和密码就用Windows登陆域帐户就可以了。解决办法2:
         http://msdn.microsoft.com/ja-jp/library/ms175043.aspx
      ① [Windows ファイアウォール] ダイアログ ボックスで、[例外] タブをクリックし、[プログラムの追加] をクリックします。
      ② [参照] をクリックし、ファイアウォール経由でアクセスする SQL Server のインスタンスに移動して、[開く] をクリックします。既定では、SQL Server は C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\Sqlservr.ex にあります。
      ③ [OK] を 2 回クリックし、Windows ファイアウォール プログラムを閉じます。
        目前已经在XP的机器(找了一台做数据库服务器)上,试验成功。我马上找项目经理汇报,看看采用那个方案。