我們正在將我們的SQL 2000框遷移到SQL 2008.但我們遇到了一個問題;當通過使用具有UNION的查詢返回結果集(行或不)時。在後面的代碼中,我們嘗試添加一個新行併爲其指定字段,但由於使用了UNION,因此當我們嘗試爲字段賦值時,它會給我們一個Multiple-step operation generated errors. Check each status value.
錯誤。我們在Windows XP & Windows 7上嘗試了以下代碼,得到了相同的結果。但是,當我們將連接字符串更改爲指向我們的SQL 2000框時,我們不會再出現這個錯誤。獲取「多步驟操作產生的錯誤,檢查每個狀態值。」 ADO與SQL服務器錯誤2008
以下示例顯示我們遇到的問題。
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();
}
弗雷多,我知道這是一個古老的線索,但我想感謝你的迴應。我收到這個錯誤,不知道爲什麼。原來,這是因爲試圖寫出比我最初設置字段更多的字符。再次感謝。 – 2013-09-26 21:16:11