2011-11-08 55 views
0

我有一個包含10000條記錄的表,現在我已經添加了用於放置純文本密碼的字段,所以現在我想更新所有記錄,但應更新新的字段用戶名的基礎......如下所示。如何批量更新在SQL Server 2008中

update users set secdetail = case when username = 'abbas' then '[email protected]' .... end 

我運行的.NET代碼此查詢,使用SqlCommand的,每當我試圖加載了一段時間後刷新pagem,我得到一個消息說,

The query processor ran out of stack space during query optimization. Please simplify the query 

請幫助。

+0

的「案例」(如命令)分開正確的SQL更新語句不在SQL邏輯,就是在這裏在少數情況下可以提供幫助,但不能用於更新10k條記錄。按照格雷格的建議。 – Aristos

回答

1

爲什麼不建立在你的.NET代碼迴路產生由semicolins

Update Users Set Secdetail = '[email protected]' Where Username = 'abbas'; 
Update Users Set Secdetail = '[email protected]' Where Username = 'bbbas'; 
Update Users Set Secdetail = '[email protected]' Where Username = 'cbbas'; 
... 
+0

Greg:不會因爲SqlCommand執行5000條更新語句而變得沉重...... – Abbas

+0

[This](http://stackoverflow.com/questions/6016475/what-is-better-dynamic-sql-or-where-case/6016488#6016488)說你不應該爲大型數據集使用case語句 – Greg