我越來越聲明 'SELECT INTO' 不支持這個版本的SQL Server - SQL Azure的
聲明 'SELECT INTO' 在這個版本的SQL Server 的SQL Server中不支持
爲下面查詢中的存儲過程
DECLARE @sql NVARCHAR(MAX)
,@sqlSelect NVARCHAR(MAX) = ''
,@sqlFrom NVARCHAR(MAX) = ''
,@sqlTempTable NVARCHAR(MAX) = '#itemSearch'
,@sqlInto NVARCHAR(MAX) = ''
,@params NVARCHAR(MAX)
SET @sqlSelect ='SELECT
,IT.ITEMNR
,IT.USERNR
,IT.ShopNR
,IT.ITEMID'
SET @sqlFrom =' FROM dbo.ITEM AS IT'
SET @sqlInto = ' INTO ' + @sqlTempTable + ' ';
IF (@cityId > 0)
BEGIN
SET @sqlFrom = @sqlFrom +
' INNER JOIN dbo.CITY AS CI2
ON CI2.CITYID = @cityId'
SET @sqlSelect = @sqlSelect +
'CI2.LATITUDE AS CITYLATITUDE
,CI2.LONGITUDE AS CITYLONGITUDE'
END
SELECT @params =N'@cityId int '
SET @sql = @sqlSelect [email protected] [email protected]
EXEC sp_executesql @sql,@params
我有大約50,000條記錄,所以決定使用臨時表。但很驚訝地看到這個錯誤。
我如何在SQL Azure中實現相同?
編輯:讀這個博客http://blogs.msdn.com/b/sqlazure/archive/2010/05/04/10007212.aspx建議我們在存儲過程中創建一個表來存儲數據而不是臨時表。併發性是否安全?它會達到性能嗎?從http://blog.sqlauthority.com/2011/05/28/sql-server-a-quick-notes-on-sql-azure/
- 每個表採取
添加一些點必須聚集索引。不支持聚簇索引的表。
- 每個連接都可以使用單個數據庫。單個事務中的多個數據庫不受支持。
- 'USE DATABASE'不能在Azure中使用。
- 不支持全局臨時表(或臨時對象)。
- 由於沒有跨數據庫連接的概念,此時鏈接服務器並不是Azure中的概念。
- SQL Azure是共享環境,因爲沒有Windows登錄的概念。
- 因爲他們在TempDB上創建壓力,所以總是會在需要後刪除TempDB對象。
- 在降壓插入期間,使用batchsize選項來限制要插入的行數。這將限制事務日誌空間的使用。
- 避免不必要地使用分組或阻止ORDER的操作,因爲它們導致高端內存使用量。
從一個解決方案:http://stackoverflow.com/a/34877208/1151741 – Nigrimmist 2016-01-19 12:52:09