【发布时间】:2011-12-23 20:18:34
【问题描述】:
我们正在将我们的 SQL 2000 机器迁移到 SQL 2008。但是我们遇到了一个问题;当使用具有 UNION 的查询返回结果集(行与否)时。稍后在代码中,我们尝试添加一个新行并为其分配字段,但由于使用了 UNION,当我们尝试为该字段分配一个值时,它会给我们一个 Multiple-step operation generated errors. Check each status value. 错误。我们在 Windows XP 和 Windows 7 上尝试了以下代码并得到了相同的结果。但是,当我们将连接字符串更改为指向 SQL 2000 框时,我们不会再收到该错误。
以下示例显示了我们遇到的问题。
var c = new ADODB.Connection();
var cmd = new ADODB.Command();
var rs = new ADODB.Recordset();
object recordsAffected;
c.Open("Provider=SQLOLEDB;Server=*****;Database=*****;User Id=*****;Password=*****;");
cmd.ActiveConnection = c;
cmd.CommandType = ADODB.CommandTypeEnum.adCmdText;
cmd.CommandText = "create table testing2008 (id int)";
cmd.Execute(out recordsAffected);
try {
cmd.CommandText = "select * from testing2008 union select * from testing2008";
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
rs.Open(cmd, Type.Missing, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic, -1);
rs.AddNew();
rs.Fields["id"].Value = 0; //throws exception
rs.Save();
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
finally {
cmd.CommandText = "drop table testing2008";
cmd.Execute(out recordsAffected);
c.Close();
}
【问题讨论】:
标签: sql-server sql-server-2008 ado