100分,求证这是不是.NET FRAMEWORK的一个bug?微软的答复不够明确

时间:2021-08-22 18:17:45
问题描述:
开发环境:
100分,求证这是不是.NET FRAMEWORK的一个bug?微软的答复不够明确
c#桌面程序  不能通过ip地址本地以及远程访问sql2005 

SqlConnection cn =new SqlConnection(@"User ID=sa;password=qdxtd;Data Source= localhost【改为ip就会报错,改成远程服务器的主机名偶尔可以成功,访问本地数据库服务器名一切正常】\SQLEXPRESS;Initial Catalog=CardDB");


下面是程序中button click事件


SqlConnection cn =new SqlConnection(@"User ID=sa;password=qdxtd;Data Source=net\SQLEXPRESS;Initial Catalog=CardDB");
            SqlCommand cmd = new SqlCommand("SELECT * from t_cars", cn);
            SqlDataReader rdr = null;

            try
            {
                cn.Open();
                rdr = cmd.ExecuteReader();

                while (rdr.Read())
                    MessageBox.Show(rdr[0].ToString());
            }
            catch (SqlException sqlE)
            {
                //MessageBox.Show(sqlE.Number.ToString());
                MessageBox.Show(sqlE.Message);
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();
            }


程序运行后的错误是:
100分,求证这是不是.NET FRAMEWORK的一个bug?微软的答复不够明确


************** 异常文本 **************
System.InvalidOperationException: 内部连接致命错误。
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   在 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()
   在 ReCard.MicroScan.button1_Click(Object sender, EventArgs e) 位置 E:\honeywell6100\ReCard\ReCard\MicroScanForm.cs:行号 32
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 已加载的程序集 **************
mscorlib
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
ReCard
    程序集版本: 1.0.0.0
    Win32 版本: 1.0.0.0
    基本代码: file:///E:/honeywell6100/ReCard/ReCard/bin/Debug/ReCard.exe
----------------------------------------
System.Windows.Forms
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Data.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Data.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Data.resources.dll
----------------------------------------
mscorlib.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.42 (RTM.050727-4200)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。

例如: 

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。



开始的时候我怀疑我的设置错误
但是参考了很多资料都做了设置还是不行
举例:

关于开启Sql Server 2005 Express版本的远程连接功能(备忘) 
感谢 workflow !!
解决方式如下:
http://www.cnblogs.com/workflow/archive/2007/04/28/731272.html
主要要做的事情有:
1、登陆改为混合模式:以windows方式连接并进入数据库,右键点击你的数据服务器->属性->安全性>选中Sql server 和windows 验证方式。
2、启用TCP/IP和Named Pipes:进入Sql Server配置管理器,在网络配置->SqlExpress的协议中启用。
3、启用远程连接:sql server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine 节点,先择"远程连接",选择"同时使用TCP/IP和named pipes"

重启服务,一般这样配置后通过.\sqlexpress就能访问数据库了(除非防火墙问题),但如果是在另外一台电脑来访问的话,还是不行(在本机用127.0.0.1\sqlexpress也不行)。

后来找了n久资料,终于看到要开启Sql Server Browser服务!(在配置管理器->Sql Server 2005服务里面开启)。开启后就能在其他机器上来访问sql了。 








这是微软对类似问题的答复:
http://support.microsoft.com/kb/927105/zh-cn

15 个解决方案

#1


Data Source=.\SQLEXPRESS
Data Source=127.0.0.1,1433

查看端口号

#2


引用 1 楼 q107770540 的回复:
Data Source=.\SQLEXPRESS
Data Source=127.0.0.1,1433

查看端口号


加端口的方式也试了。不过下述的写法,但还是失败了
Data Source=127.0.0.1,1433\SQLEXPRESS

#4


sqlserver配置管理器------>sql网络配置--------->MSSQLSEVER协议

------->TCP/IP-------->右键属性------>IP地址

把127.0.0.1启用。。。对应你机器的IP启用。。。1433端口打开启用。。

试一试。。。

#5


记得完事后重启一下服务。。。。。

#6


引用 4 楼 porschev 的回复:
sqlserver配置管理器------>sql网络配置--------->MSSQLSEVER协议

------->TCP/IP-------->右键属性------>IP地址

把127.0.0.1启用。。。对应你机器的IP启用。。。1433端口打开启用。。

试一试。。。


这些都设置了 

#7


引用 3 楼 bloodish 的回复:
看看这篇,是否有帮助

SQL2005Express 如何设置远程连接到服务器


谢啦

这上面的都试了 

不行。

怀疑是nf的bug

#8


这是微软对类似问题的答复:

http://support.microsoft.com/kb/927105/zh-cn

是不是需要我打vs的补丁呢?

#9


我公司都设置用的IP连接没出现问题。
是不是服务器设置没弄好。

#10


不会吧.
没碰见过呀.

#11


sql 配置的问题。
三年以前弄过。不过太久。都忘了咋弄的了。

#12


引用 11 楼 zanfeng 的回复:
sql 配置的问题。
三年以前弄过。不过太久。都忘了咋弄的了。


引用 10 楼 flyerwing 的回复:
不会吧.
没碰见过呀.


引用 9 楼 cjh200102 的回复:
我公司都设置用的IP连接没出现问题。
是不是服务器设置没弄好。


现在已经判断出是数据库的问题了

重装的server2003  裸机上在装了sql2005 企业版。
通过ip可以访问了,但是通过主机名远程访问还是出现问题。

该配置的地方都是配置了
实在是很无语。

#13


1.确认你的数据库服务器TCP/IP和命名管道两种方式连接都打开了
2.同样的连接字符串如果用SQLserver企业管理器连到数据库服务器正常么?
如果有问题,很可能是SQLserver补丁和版本问题

#14


引用 13 楼 yuxuanji 的回复:
1.确认你的数据库服务器TCP/IP和命名管道两种方式连接都打开了
2.同样的连接字符串如果用SQLserver企业管理器连到数据库服务器正常么?
如果有问题,很可能是SQLserver补丁和版本问题


1,确认
2,正常

#15


你自已的问题,我就没有问题

#1


Data Source=.\SQLEXPRESS
Data Source=127.0.0.1,1433

查看端口号

#2


引用 1 楼 q107770540 的回复:
Data Source=.\SQLEXPRESS
Data Source=127.0.0.1,1433

查看端口号


加端口的方式也试了。不过下述的写法,但还是失败了
Data Source=127.0.0.1,1433\SQLEXPRESS

#3


#4


sqlserver配置管理器------>sql网络配置--------->MSSQLSEVER协议

------->TCP/IP-------->右键属性------>IP地址

把127.0.0.1启用。。。对应你机器的IP启用。。。1433端口打开启用。。

试一试。。。

#5


记得完事后重启一下服务。。。。。

#6


引用 4 楼 porschev 的回复:
sqlserver配置管理器------>sql网络配置--------->MSSQLSEVER协议

------->TCP/IP-------->右键属性------>IP地址

把127.0.0.1启用。。。对应你机器的IP启用。。。1433端口打开启用。。

试一试。。。


这些都设置了 

#7


引用 3 楼 bloodish 的回复:
看看这篇,是否有帮助

SQL2005Express 如何设置远程连接到服务器


谢啦

这上面的都试了 

不行。

怀疑是nf的bug

#8


这是微软对类似问题的答复:

http://support.microsoft.com/kb/927105/zh-cn

是不是需要我打vs的补丁呢?

#9


我公司都设置用的IP连接没出现问题。
是不是服务器设置没弄好。

#10


不会吧.
没碰见过呀.

#11


sql 配置的问题。
三年以前弄过。不过太久。都忘了咋弄的了。

#12


引用 11 楼 zanfeng 的回复:
sql 配置的问题。
三年以前弄过。不过太久。都忘了咋弄的了。


引用 10 楼 flyerwing 的回复:
不会吧.
没碰见过呀.


引用 9 楼 cjh200102 的回复:
我公司都设置用的IP连接没出现问题。
是不是服务器设置没弄好。


现在已经判断出是数据库的问题了

重装的server2003  裸机上在装了sql2005 企业版。
通过ip可以访问了,但是通过主机名远程访问还是出现问题。

该配置的地方都是配置了
实在是很无语。

#13


1.确认你的数据库服务器TCP/IP和命名管道两种方式连接都打开了
2.同样的连接字符串如果用SQLserver企业管理器连到数据库服务器正常么?
如果有问题,很可能是SQLserver补丁和版本问题

#14


引用 13 楼 yuxuanji 的回复:
1.确认你的数据库服务器TCP/IP和命名管道两种方式连接都打开了
2.同样的连接字符串如果用SQLserver企业管理器连到数据库服务器正常么?
如果有问题,很可能是SQLserver补丁和版本问题


1,确认
2,正常

#15


你自已的问题,我就没有问题