|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
добрый день, требуется перенести несколько баз данных из SQL Server 2019 on-premise в облако google, в Fully Managed Database Service. проблема в том, что default collation и баз данных, и сервера - UTF8. google разрешает создать БД с default collation UTF8, но невозможно создать instance c UTF8. получается, что collation пользовательской БД и tempdb разные. и тогда возникает проблема: при создании временной таблицы, все varchar поля в collation БД [tempdb] (например SQL_Latin1_General_CP1_CI_AS). а все таблицы обычно БД в UTF8. при сравнение полей в разных collation, возникает ошибка. что можно сделать?
но: DDL триггер (и на tempdb, и на пользовательской БД) не ловит создание временных таблиц. на системых таблицах создать триггер невозможно. какие ещё могут быть варианты? спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 16:23 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
Во, народ, ищет приключений на собственную задницу. PS. Tempdb должна создаваться по образу и подобию Model. https://docs.microsoft.com/ru-ru/sql/relational-databases/databases/model-database?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 17:27 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv, Если этот сервис поддерживает Contained Database, можно воспользоваться тем, что поля # таблиц для таких баз создаются с ее (базы) дефолтным коллейтом. https://docs.microsoft.com/en-us/sql/relational-databases/databases/contained-database-collations?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 17:47 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
aleks222 Во, народ, ищет приключений на собственную задницу. а те уже выкручивают руки нам. aleks222 PS. Tempdb должна создаваться по образу и подобию Model. https://docs.microsoft.com/ru-ru/sql/relational-databases/databases/model-database?view=sql-server-ver15 невозможно. Код: sql 1.
error: Cannot alter the database 'model' because it is a system database. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 18:58 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
aleks222, в облаке откуда model... В облаке такое г-цо, что и не снилось в кошмаре девопса. Там collation сервера невозможно выбрать, он дефолтный америкосовский. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:00 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv, авторIT гиганты завлекают в облака технически безграмотных управленцев именно так, разводят балбесов как детей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:01 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv, если это вопрос уже решенный, то очень плохо, если нет - то надо поставить в известность кого следует, что вы не готовы переносить workflow в облако ввиду технических ограничений облака. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:03 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
Владислав Колосов aleks222, в облаке откуда model... В облаке такое г-цо, что и не снилось в кошмаре девопса. Там collation сервера невозможно выбрать, он дефолтный америкосовский. 1. в google облаке (Fully Managed Database Service) есть все системные БД: master, tempdb, model, msdb. но многие возможность по изменению не поддерживаются. 2. collation сервера выбрать можно. но список возможных collations не включает в себя UTF8. google консультанты утверждают, что в будущем добавят и UTF8 тоже. когда точно - не говорят. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:14 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv aleks222 Во, народ, ищет приключений на собственную задницу. а те уже выкручивают руки нам. aleks222 PS. Tempdb должна создаваться по образу и подобию Model. https://docs.microsoft.com/ru-ru/sql/relational-databases/databases/model-database?view=sql-server-ver15 невозможно. Код: sql 1.
error: Cannot alter the database 'model' because it is a system database. Ты там админ или так? 1. Бякапим. 2. Восстанавливаем как xModel. 3. Делаем усе, шо хотим. 4. Бякапим. 5. Восстанавливаем Model. ЗЫ. Сломаем нахер это облако. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:20 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
aleks222, я админ, все права у меня. это же не on-prem. это облако. подобные хаки наглухо закрыты. на попытку забекапить [model], получают ошибку: Код: html 1.
(дело не в доступе, это облако не разрешает). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:40 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv aleks222, я админ, все права у меня. это же не on-prem. это облако. подобные хаки наглухо закрыты. на попытку забекапить [model], получают ошибку: Код: html 1.
(дело не в доступе, это облако не разрешает). Это не права sysadmin. ЗЫ. Шо значит "хаки"? Model для того и дана народу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:45 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
aleks222, увы. sysadmin role не существует в google облаке. линк : SQL Server features unavailable for Cloud SQL: The sysadmin role and system stored procedures that require it ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:52 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv это не народ ищет, это IT гиганты завлекают в облака технически безграмотных управленцев. а те уже выкручивают руки нам. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 08:20 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv что можно сделать?
В сотне команд создания временной таблицы написать после каждого строкового поля collate database_default не так уж сложно. Зато код будет правильный. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 08:42 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
alexeyvg, согласен, доработать вполне реально, но требует времени на подготовку и утверждения требования collation в правилах разработки. О чем необходимо доложить руководству, как я рекомендовал ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 12:00 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
alexeyvg valv это не народ ищет, это IT гиганты завлекают в облака технически безграмотных управленцев. а те уже выкручивают руки нам. новый коллейшн UTF8 это одна из самых важных новых фич в SQL Server 2019. для тех, кто работает со строками на разных языках и системах записи (алфавитах, иероглифах) - это долгожданная возможность уйти от кошмара nvarchar; это архиважно для VLDB. так что да, это грамотное и разумное решение. уверен, UTF8 коллейшн станет промышленным стандартом. Microsoft молодцы. а вот гугль - подлые твари. в документации они декларирует поддержку UTF8 для Fully Managed Database Service. как мы могли предположить, что на уровне БД UTF8 есть, а на уровне сервера нет? в документации об этом ни слова. во время консультаций - ни слова. с моей точки зрения, это просто невероятная наглость и подлость гугля. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:11 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv какие ещё могут быть варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 14:35 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
Конечно, если код работы со временными таблицами написан исключительно монопольно, и/или пользователи ходят под одним логином, то такой метод не подойдёт без разделения данных в этих "временных" таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 15:00 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
tunknown valv какие ещё могут быть варианты? Кстати да. M$ опубликовала вот такой интересный документ: https://docs.microsoft.com/ru-ru/sql/relational-databases/in-memory-oltp/faster-temp-table-and-table-variable-by-using-memory-optimization?view=sql-server-ver15 Тот же самый подход можно использовать и в данном случае. Но придется выловить все Create table # и Select into # во всём тексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 15:31 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
tunknown Конечно, если код работы со временными таблицами написан исключительно монопольно, и/или пользователи ходят под одним логином, то такой метод не подойдёт без разделения данных в этих "временных" таблицах. Решение есть, см. ниже... Гм... выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 15:32 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
uaggster tunknown Конечно, если код работы со временными таблицами написан исключительно монопольно, и/или пользователи ходят под одним логином, то такой метод не подойдёт без разделения данных в этих "временных" таблицах. Решение есть, см. ниже... Гм... выше. См. правее или левее ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 16:51 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
valv alexeyvgАга, управленцы безграмотные, а технари, которые закодили необходимость иметь для каждой своей гениальной проги свой сервер со своим коллейшеном, грамотные? :-) Код должен быть такой, что базу с любым коллешеном (которого ещё не было во время разработки), можно было восстановить на сервер с другим коллейшеном (которого тоже ещё не было во время разработки). Сделать это очень просто, нагуглить эти старые рекомендации можно за минуту, так было принято писать и лет 30 назад, ничего не поменялось. Проблема тут, конечно, в том, что разработчики ввиду отсутствия опыта не знали, что нужно гуглить, пока не столкнулись с проблемой :-) tunknown valv какие ещё могут быть варианты? tunknown Хотя и первый совет из области скорее вредных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 21:39 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
alexeyvg В данном случае косяк не в выборе коллейшена. Код должен быть такой, что базу с любым коллешеном (которого ещё не было во время разработки), можно было восстановить на сервер с другим коллейшеном (которого тоже ещё не было во время разработки). Сделать это очень просто, нагуглить эти старые рекомендации можно за минуту, так было принято писать и лет 30 назад, ничего не поменялось. Проблема тут, конечно, в том, что разработчики ввиду отсутствия опыта не знали, что нужно гуглить, пока не столкнулись с проблемой :-) Это как, интересно? Всегда создавать темповые таблицы с указанием COLLATE полей и исключить Select into как факт? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 09:02 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
uaggster alexeyvg В данном случае косяк не в выборе коллейшена. Код должен быть такой, что базу с любым коллешеном (которого ещё не было во время разработки), можно было восстановить на сервер с другим коллейшеном (которого тоже ещё не было во время разработки). Сделать это очень просто, нагуглить эти старые рекомендации можно за минуту, так было принято писать и лет 30 назад, ничего не поменялось. Проблема тут, конечно, в том, что разработчики ввиду отсутствия опыта не знали, что нужно гуглить, пока не столкнулись с проблемой :-) Это как, интересно? Всегда создавать темповые таблицы с указанием COLLATE полей и исключить Select into как факт? select * into фсе делает правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 10:51 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
uaggster, in-memory имеет узкую применимость из-за ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 12:41 |
|
как поймать в триггере создание временной таблицы?
|
|||
---|---|---|---|
#18+
uaggster Это как, интересно? Всегда создавать темповые таблицы с указанием COLLATE полей и исключить Select into как факт? А если делать CREATE TABLE, то нужно для каждого строкового поля указывать COLLATE DATABASE DEFAULT Это же элементарные вещи. Неужели для разработки системы "с 250к строк кода" компания не смогла себе позволить хотя бы одного специалиста по сиквелу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2021, 17:11 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1684134]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 271ms |
0 / 0 |