我越来越声明 '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