gpt4 book ai didi

sql - 此版本的 SQL Server 不支持语句 'SELECT INTO' - SQL Azure

转载 作者:行者123 更新时间:2023-12-02 12:13:33 26 4
gpt4 key购买 nike

我正在获取

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 条记录,因此决定使用临时表。但很惊讶地看到这个错误。

如何在 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 by 操作,因为它们会导致高端内存使用。

最佳答案

SELECT INTO 是您无法在 SQL Azure 中执行的众多操作之一。

您要做的就是首先创建临时表,然后执行插入。像这样的东西:

CREATE TABLE #itemSearch (ITEMNR INT, USERNR INT, IT.ShopNR INT, IT.ITEMID INT)
INSERT INTO #itemSearch
SELECT IT.ITEMNR, IT.USERNR, IT.ShopNR ,IT.ITEMID
FROM dbo.ITEM AS IT

关于sql - 此版本的 SQL Server 不支持语句 'SELECT INTO' - SQL Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com