2010-08-26 71 views
0

我正在將大量空表遷移到SQL Server 2008.T-SQL:SELECT INTO稀疏表?

這些表是一個大邏輯表的垂直分區。

問題是這個邏輯表有1024個以上的列。

鑑於大多數字段爲空,我打算使用一個稀疏表。

對於我所有的表,到目前爲止我一直在使用SELECT ... INTO,它一直工作得很好。

但是,現在我有「CREATE TABLE失敗,因爲表'MyBigTable'中的列'xyz'超過了最多1024列」。

有沒有什麼辦法可以做SELECT ... INTO,以便它可以創建具有稀疏支持的新表格?

回答

2

您可能想要做的是手動創建表並使用INSERT ... SELECT語句填充它。

要創建表格,我會推薦腳本編寫不同的組件表併合並它們的定義,根據需要將它們全部設置爲SPARSE。然後運行你的單一CREATE TABLE聲明。

+0

做到了這一點。工作很好。 – tomfanning 2010-08-30 22:57:32

0

你不能(也可能不想)。有關MSDN文檔,請參閱INTO Clause (TSQL)

問題是稀疏表是物理存儲特性而不是邏輯特性,因此DBMS引擎無法知道要複製該特性。此外,它是一個表範圍屬性,SELECT可以有多個基礎源表。請參閱我鏈接的頁面的「備註」部分,它討論瞭如何使用默認組織詳細信息。