Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

徵狀

請試想下列案例:

  • 在 Microsoft SQL Server 2008 或 SQL Server 2008 R2 中,您可以使用下列其中一個查詢,將多個列插入到表格中:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    注意事項

    • <target_table>預留位置代表實際的目標資料表名稱。

    • <謂語>預留位置代表實際的謂語。

    • <source_table>預留位置代表實際的來來源資料表。

  • 超過資料表的鎖升級閾值。

在這種情況下,資料庫引擎不會升級資料表的鎖。

原因

之所以發生這個問題,是因為 SQL Server 不會在內部計算由 INSERT 操作產生的所有新鎖定。 因此,可能不會在需要時觸發鎖定升級閥值。

解決方案

SQL Server 2008 的 Service pack 資訊

若要解決此問題,請取得最新的 SQL Server 2008 service pack。如需詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

968382 如何取得最新的 SQL Server service pack 2008

SQL Server 2008 R2 的 Service pack 資訊

若要解決此問題,請取得最新的 SQL Server 2008 R2 service pack。如需詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2527041如何取得最新的 SQL Server 2008 R2 service pack

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。這個問題第一次在 sql server 2008 Service Pack 2 的 sql server 2008 中修正。這個問題首先在 sql server 2008 R2 Service Pack 1 for SQL Server 2008 R2 中修正。

其他相關資訊

如需鎖定升級的詳細資訊,請造訪下列 Microsoft TechNet 網站:

關於鎖升級的一般資訊若要判斷是否已升級資料表的鎖,請執行下列 Transact-sql 語句:

USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 

如果資料表的鎖已升級,則最後一個 SELECT 語句會傳回 12的值。 如果沒有升級資料表的鎖,最後一個 SELECT 語句就會傳回 4006640067的值。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×