azure不支持哪些语句 sql_此版本的SQL Server – SQL Azure不支持语句’SELECT INTO’...

在尝试在SQLAzure中使用存储过程创建一个TempTable时,遇到了不支持'SELECT INTO'的错误。文章讨论了SQLAzure的限制,如每个表必须有聚簇索引,不支持全局临时表等,并提出了应对策略,如使用批处理插入和避免不必要的ORDER BY。作者寻求在保持效率的同时适应SQLAzure环境的方法。
摘要由CSDN通过智能技术生成

我正进入(状态

Statement ‘SELECT INTO’ is not supported in this version of SQL Server

in 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 +@sqlInto +@sqlFrom

EXEC sp_executesql @sql,@params

我有大约50,000条记录,因此决定使用Temp Table.但惊讶地看到这个错误.

我如何在SQL Azure中实现相同的目标?

>每个表必须具有聚簇索引.不支持没有聚簇索引的表.

>每个连接都可以使用单个数据库.不支持单个事务中的多个数据库.

>’USE DATABASE’不能在Azure中使用.

>不支持全局临时表(或临时对象).

>由于没有跨数据库连接的概念,目前链接服务器不是Azure中的概念.

> SQL Azure是共享环境,因为没有Windows登录的概念.

>总是在需要之后删除TempDB对象,因为它们会对TempDB造成压力.

>在插入插入期间,使用batchsize选项来限制要插入的行数.这将限制事务日志空间的使用.

>避免不必要地使用分组或按操作阻止ORDER,因为它们会导致高端内存使用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值