jestem corazkomunikat 'SELECT INTO' nie jest obsługiwany w tej wersji programu SQL Server - SQL Azure
Statement 'SELECT INTO' nie jest obsługiwany w tej wersji programu SQL Server w SQL Server
na poniższym zapytaniu wewnątrz procedura
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
mam około 50000 rekordów przechowywane, więc postanowiłem wykorzystać Temp tabela. Ale zaskoczony, widząc ten błąd.
Jak mogę osiągnąć to samo w SQL Azure?
Edit: Czytając ten blog http://blogs.msdn.com/b/sqlazure/archive/2010/05/04/10007212.aspx sugerujące nam stworzyć tabelę wewnątrz procedury składowanej do przechowywania danych, zamiast tabeli Temp. Czy jest bezpieczny pod współbieżnością? Czy osiągnie wydajność?
dodając kilka punktów pochodzi http://blog.sqlauthority.com/2011/05/28/sql-server-a-quick-notes-on-sql-azure/
- każdym stole może mieć współczynnik klastrowy. Tabele bez indeksu klastrowanego nie są obsługiwane.
- Każde połączenie może korzystać z pojedynczej bazy danych. Wiele baz danych w pojedynczej transakcji nie jest obsługiwane.
- "USE DATABASE" nie może być używane na Azure.
- Globalne tabele tempa (lub obiekty Temp) nie są obsługiwane.
- Ponieważ nie ma koncepcji połączenia z krzyżową bazą danych, serwer połączony nie jest koncepcją na Azure w tej chwili.
- SQL Azure to środowisko współdzielone, a z tego powodu nie ma koncepcji logowania do systemu Windows.
- Zawsze upuść obiekty TempDB po ich potrzebie, ponieważ powodują nacisk na TempDB.
- Podczas wkładania złotówki użyj opcji batchsize, aby ograniczyć liczbę wstawianych rzędów. Ogranicza to wykorzystanie przestrzeni dziennika transakcji.
- Unikaj niepotrzebnego użycia grupowania lub blokowania ZAMÓWIENIA przez operacje, ponieważ prowadzą one do wykorzystania pamięci o wysokiej wydajności.
Jednym z rozwiązań: http://stackoverflow.com/a/34877208/1151741 – Nigrimmist