我将不胜感激任何想法。这让我们很困惑。这个问题似乎是环境问题,所以我们将在其他地方主持这个过程,但我不知道为什么会出现问题,这让我发疯。关键的谜团在于 Select 有效,但 Update 无效。
- 专用网络内的 MS SQL Server 2005。
- DMZ 中的 2003 Server .Net 2.0 IIS 服务器
- 端口 1433 在两者之间开放。(打开所有端口的测试产生了相同的结果。)
- 软件防火墙都被禁用。
- SQL 管理控制台在连接时显示相同的错误。
- 来自专用网络内部和 DMZ 其他地方的连接有效。
- 过程工作了多年,然后在 17 日停止。唯一可见的区别是 IE8 KB 更新。
我们收到错误:
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)
连接打开工作没有错误。连接字符串正在传递数据库的服务器和实例。创建了一个具有相同结果的新用户。如果指定了错误的用户,则会发回无效的用户响应。
使用 System.Data.SqlClient.SqlConnection - 选择语句工作 - ExecuteScaler() 和 ExecuteReader() - 更新语句给出上述错误 - ExecuteNonQuery()
使用 ODBC 适用于选择和更新。
SQL 跟踪显示选择命令,但没有显示 SQLConnection 更新命令。
假设问题与 DNS 相关,我们还用 IP 地址替换了服务器名称。同样,命名连接和 IP 连接都允许选择但不允许更新。
当尝试从 IIS 计算机使用 SQL 管理控制台时,SQL 跟踪显示某些对话框启动,然后管理控制台给出相同的传输错误。所以看起来问题不在于IIS。
谢谢,
乔什
尝试强制连接字符串使用 TCP/IP 和所需的端口:
参考:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx