![SQLServer 2005 选择语句有效,更新语句无效](https://linux22.com/image/605231/SQLServer%202005%20%E9%80%89%E6%8B%A9%E8%AF%AD%E5%8F%A5%E6%9C%89%E6%95%88%EF%BC%8C%E6%9B%B4%E6%96%B0%E8%AF%AD%E5%8F%A5%E6%97%A0%E6%95%88.png)
我很感激任何关于这方面的想法。这让我们很困惑。这个问题似乎是环境问题,所以我们将在其他地方托管这个进程,但我不知道为什么会出现问题,这让我很抓狂。关键的谜团是 Select 有效,但 Update 无效。
- 私有网络内的 MS SQL Server 2005。
- 2003 Server .Net 2.0 IIS 服务器位于 DMZ
- 两者之间的端口 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。
谢谢你,
乔什
答案1
尝试强制连接字符串使用 TCP/IP 和所需端口:
tcp:servernameorIP\instanceName,1433
参考:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx