Mur*_*san 8 sql sql-server azure-sql-database
我正进入(状态
SQL Server中此版本的SQL Server不支持语句"SELECT INTO"
对于存储过程中的以下查询
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
Run Code Online (Sandbox Code Playgroud)
我有大约50,000条记录,因此决定使用Temp Table.但惊讶地发现这个错误.
我如何在SQL Azure中实现相同的目标?
编辑:阅读此博客http://blogs.msdn.com/b/sqlazure/archive/2010/05/04/10007212.aspx建议我们在存储过程中创建一个表来存储数据而不是Temp表.在并发下安全吗?它会达到性能吗?
添加一些积分来自http://blog.sqlauthority.com/2011/05/28/sql-server-a-quick-notes-on-sql-azure/
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
Run Code Online (Sandbox Code Playgroud)
小智 5
新的Azure数据库更新预览已解决此问题:
V12预览使您可以创建没有聚簇索引的表.此功能特别有助于它支持T-SQL SELECT ... INTO语句,该语句根据查询结果创建表.
http://azure.microsoft.com/en-us/documentation/articles/sql-database-preview-whats-new/