Альтернативы глобальной временной таблице в Sql Azure - PullRequest
1 голос
/ 29 июля 2011

Часть моего sp содержит следующий код. Код успешно выполняется в моей локальной базе данных SQL. но когда я запускаю его в sql azure, выдается сообщение об ошибке:

«Глобальные временные объекты не поддерживаются в этой версии SQL Server».

Как мне изменить этот запрос, чтобы он работал на лазурном.

    SET @query = N'SELECT STUDENT_ID, ROLL_NO, TITLE, STUDENT_NAME, EXAM_NAME, '+
                @cols +
                ' INTO ##FINAL 
                FROM
                (
                    SELECT ROLL_NO, TITLE, STUDENT_ID, SUBJECT_ID, STUDENT_NAME, EXAM_NAME, DISPLAYORDER, MARKS
                    FROM #AVERAGES
                    UNION 
                    SELECT ROLL_NO, TITLE, STUDENT_ID, SUBJECT_ID, STUDENT_NAME, EXAM_NAME, DISPLAYORDER, MARKS
                    FROM #MARKS 
                    UNION
                    SELECT ROLL_NO, TITLE, STUDENT_ID, SUBJECT_ID, STUDENT_NAME, EXAM_NAME, DISPLAYORDER, MARKS
                    FROM #GRACEMARKS
                    UNION
                    SELECT ROLL_NO, TITLE, STUDENT_ID, SUBJECT_ID, STUDENT_NAME, EXAM_NAME, DISPLAYORDER, MARKS
                    FROM #TOTAL
                    ) p
                    PIVOT
                    (
                    MAX([MARKS])
                    FOR SUBJECT_ID IN
                    ( '+
                    @cols +' )
                ) AS FINAL
                ORDER BY STUDENT_ID ASC, DISPLAYORDER ASC, EXAM_NAME ASC;'

    EXECUTE(@query)

1 Ответ

1 голос
/ 15 сентября 2017

Лучше поздно, чем никогда. Глобальные временные таблицы с базой данных в открытом предварительном просмотре для БД Azure SQL :

Аналогично глобальным временным таблицам для SQL Server, таблицы с префиксом ## table_name, глобальные временные таблицы для Azure SQLБД хранятся в базе данных tempdb и следуют той же семантике. Однако вместо того, чтобы делиться ими со всеми базами данных на сервере, они ограничиваются определенной базой данных и используются всеми сеансами пользователей в этой же базе данных. Сеансы пользователей из других баз данных SQL Azure не могут получить доступ к глобальным временнымтаблицы, созданные как часть запущенных сеансов, подключенных к данной базе данных.Любой пользователь может создавать глобальные временные объекты.

CREATE TABLE ##test ( a int, b int);
INSERT INTO ##test values (1,1);

И из MSDN CREATE TABLE:

Глобальные временные таблицы в области базы данных (Azure SQLБаза данных)

Глобальные временные таблицы для SQL Server (инициируемые с помощью имени таблицы ##) хранятся в базе данных tempdb и совместно используются всеми сеансами пользователей во всем экземпляре SQL Server.Сведения о типах таблиц SQL см. В разделе «Создание таблиц», приведенном выше.

База данных SQL Azure поддерживает глобальные временные таблицы, которые также хранятся в базе данных tempdb и имеют область действия на уровне базы данных.Это означает, что глобальные временные таблицы являются общими для всех сеансов пользователей в одной и той же базе данных SQL Azure.Сеансы пользователей из других баз данных Azure SQL не могут получить доступ к глобальным временным таблицам.

Глобальные временные таблицы для базы данных Azure SQL имеют тот же синтаксис и семантику, что SQL Server использует для временных таблиц.Аналогично, глобальные временные хранимые процедуры также ограничиваются уровнем базы данных в SQL Azure DB.Локальные временные таблицы (инициируемые с именем # table) также поддерживаются для базы данных SQL Azure и имеют тот же синтаксис и семантику, что и SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...