powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Microsoft задавит Oracle
25 сообщений из 408, страница 11 из 17
Microsoft задавит Oracle
    #34920301
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
А давайте отвянем от всех прочих задач (включая накатывания сервис пака
на сервер)- и сосредоточимся на той, что я озвучил, ага? Т.е.
накатывание патча на прикладную задачу - и восстановление в случае сбоя.

не проблема, сосредоточимся, но сначала вы с pkarklin должны доказать, что можете определить сбой. то что mssql способен проверить синтаксис конечно радует, но то что @@errors=0 совершенно не означает, что в результате в базе не появилось туча кривых хп.

lockyОбычные юзера.
Сегодня накатывал патч на рабочую базу.
Никого выгонять не пришлось, знаете-ли.
Поелику патч был для прикладной системы, а не для СКЛ Сервера.

прикольно там у вас, выходит у вас клиент может начать транзакцию, запустить хп1 старой версии, нарватся на блокировки батча с патчиком, а потом прожолжить работу и запустить хп2 уже новой версии в той же транзакции я не уверен, что у меня бы такой фокус прошел бы без последствий.

на живых клиентах имхо можно гонять разве, что патчик который правит глючки хп, но это в оракле опять же гораздо удобней. у mssql нет аналога create or replace procedure :)
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34920397
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
прикольно там у вас, выходит у вас клиент может начать транзакцию, запустить хп1 старой версии, нарватся на блокировки батча с патчиком, а потом прожолжить работу и запустить хп2 уже новой версии в той же транзакции я не уверен, что у меня бы такой фокус прошел бы без последствий.
Если создание обоих хп идет в одной транзакции, то как клиент запустит разные версии?
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34920423
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuper
Если создание обоих хп идет в одной транзакции, то как клиент запустит разные версии?
ну например так же как он получает не консистентный набор на дефолтном уровне изолированости транзакций ...
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34920692
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!я не получаю. что я делаю не так ? как я подозреваю я получил бы это сообщение если бы дропнул всю табличку, а не переименовал лишь одно поле.

Вы правы. Переименовать не удастся только schema-bound объекты.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
СREATE TABLE dbo.Table1(col1 int, col2 int)
GO

CREATE VIEW View1 
WITH SCHEMABINDING
AS
  SELECT
    col1, col2
  FROM
    dbo.Table1
GO

EXEC sp_rename 'dbo.Table1.col2', 'col3', 'COLUMN'
GO

Server: Msg  15336 , Level  16 , State  1 , Procedure sp_rename, Line  438 
Object 'dbo.Table1.col2' cannot be renamed because the object participates in enforced dependencies.

ХП и триггера в MS SQL, не могут быть schema-bound.

Yo.!а что толку, отгадать кривая ли хп или нет запросик не поможет. этот запрос показывает название поля которое сейчас в бд, в про то что в хп используется другое (теперь кривое) название - молчит. а название поля, так я его и так могу посмотреть, в чем фишка ?

Фишка, на мой взгляд в том, что, есть возможность проверить, что колонка используется в хп. Использовать эту фишку как раз и стОит.

Yo.!посмотрел sp_depends, вообще бредятина. походу mssql хранит какой-то ИД таблицы, поэтому sp_depends считает, что моя хп использует переименованую таблицу, а на деле в ней старое кривое название таблицы.
я пока не вижу способа как отгадать кривая ли у меня хп.

Естественно, что хранятся идентификаторы объектов и их колонок. Отгадать "после" - сделать алтер зависимых объектов и получить ошибку на "битых" хп.

Yo.!сосредоточимся, но сначала вы с pkarklin должны доказать, что можете определить сбой. то что mssql способен проверить синтаксис конечно радует, но то что @@errors=0 совершенно не означает, что в результате в базе не появилось туча кривых хп.

См. выше.

Yo.!прикольно там у вас, выходит у вас клиент может начать транзакцию, запустить хп1 старой версии, нарватся на блокировки батча с патчиком, а потом прожолжить работу и запустить хп2 уже новой версии в той же транзакции я не уверен, что у меня бы такой фокус прошел бы без последствий.

Ну уж ерунду то не стоит нести. Батч с патчиком наложит Sch-M блокировку на модифицируемые объекты, что не даст возможности их запустить до фиксации транзакции в батче.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921127
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Вы правы. Переименовать не удастся только schema-bound объекты.
ХП и триггера в MS SQL, не могут быть schema-bound.
ну значит про этот бесполезный механизм можно смело забыть. переходим к sp_depends

pkarklin
Фишка, на мой взгляд в том, что, есть возможность проверить, что колонка используется в хп. Использовать эту фишку как раз и стОит.

сотни таблиц, тысячи процедур и не поддающее подсчетам кол-во колонок, как я должен использовать ?

pkarklin
Естественно, что хранятся идентификаторы объектов и их колонок. Отгадать "после" - сделать алтер зависимых объектов и получить ошибку на "битых" хп.

наверно можно проще - приведите скрипт или что там еще, как конкретно вы решаете, что нажать после наката патча rollback или commit. а то я не понимаю, зависимые объекты это хп, как им сделать алтер...


pkarklin
Ну уж ерунду то не стоит нести. Батч с патчиком наложит Sch-M блокировку на модифицируемые объекты, что не даст возможности их запустить до фиксации транзакции в батче.
не понял, с какой стати юзерские транзакции на read commited будут вести себя как serializable ?? юзерская транзакция выполняет хп1, это ей никто не запретит, дадее запускается батч с патчем, который раставляет блокировки на хп1 и хп2, теперь юзерская транзакция честно дожидается обновления и снятие блокировок. теперь ничто не запретит ей запустить хп2 уже новой версии, обычный read commited.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921231
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!сотни таблиц, тысячи процедур и не поддающее подсчетам кол-во колонок, как я должен использовать ?

И какие проблемы перед вызовом sp_rename проверить, в каких объектах используется та или иная колонка?

Yo.!наверно можно проще - приведите скрипт или что там еще, как конкретно вы решаете, что нажать после наката патча rollback или commit. а то я не понимаю, зависимые объекты это хп, как им сделать алтер...

Получить перечень зависимых объектов можно - можно.
Определить тип объектов можно - можно.
Получить скрипт объекта можно - можно (sys.sql_modules).

И какие проблемы вызвать sp_executesql с тексом модуля, в котором CREATE заменен на ALTER?

Yo.!не понял, с какой стати юзерские транзакции на read commited будут вести себя как serializable ?? юзерская транзакция выполняет хп1, это ей никто не запретит, дадее запускается батч с патчем, который раставляет блокировки на хп1 и хп2, теперь юзерская транзакция честно дожидается обновления и снятие блокировок. теперь ничто не запретит ей запустить хп2 уже новой версии, обычный read commited.

Наверное можно проще - приведите скриптик, или что-то там еще, чтобы воспроизвести описанное Вами.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921361
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> глючки хп, но это в оракле опять же гораздо удобней. у mssql нет аналога
> create or replace procedure :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if object_id('procname') is null exec('create procedure procname as 
return 0')
go

alter procedure procname
as begin
  .......
end

:)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921402
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> прикольно там у вас, выходит у вас клиент может начать транзакцию,
> запустить хп1 старой версии, нарватся на блокировки батча с патчиком, а
> потом прожолжить работу и запустить хп2 уже новой версии в той же
> транзакции я не уверен, что у меня бы такой фокус прошел бы без последствий.

теоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).
но даже выгнав юзеров для отката патча нам достаточно сделать rollback,
а не плясать с бубном.
кстати, flashback - он для всех редакций доступен? или - ставится
отдельно за доп. деньги?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921471
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
И какие проблемы вызвать sp_executesql с тексом модуля, в котором CREATE заменен на ALTER?

у меня то никаких проблем, у меня нормальные зависимоти и статусы хп в оракле. то что вы тут мечетесь между SCHEMABINDING и sp_depends, sys.sql_modules показывает, что нет у МС инструмента, есть набор каких-то заготовок/полуфабрикатов из которых может быть лет через 8 сиквельные ДБА получат, то что имеют ораклоиды ну очень давно. в противном случае тут меня бы завалили простенькими скриптами которые решают элементарную задачу - можно ли нажать commit.

pkarklin
Наверное можно проще - приведите скриптик, или что-то там еще, чтобы воспроизвести описанное Вами.
попробую
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921513
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyтеоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).
но даже выгнав юзеров для отката патча нам достаточно сделать rollback,
а не плясать с бубном.
кстати, flashback - он для всех редакций доступен? или - ставится
отдельно за доп. деньги?
а как это может быть даже теоритически?
вот попробовал выполняю сразу два скрипта(сначала первый)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin tran
go
create proc dbo.t1 as select 't1'
go
create proc dbo.t2 as select 't2 old'
go
waitfor delay '00:00:10'
go
alter proc dbo.t2 as select 't2 new'
go
commit tran

Код: plaintext
1.
2.
set transaction isolation level read uncommitted
exec dbo.t1
exec dbo.t2

пока транзакция с созданием процедур не завершится процедуры не выполняются и результат второго скрипта:
Код: plaintext
1.
2.
3.
4.
5.
----
t1

------
t2 new
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921531
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
теоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).

я знаю

locky
но даже выгнав юзеров для отката патча нам достаточно сделать rollback,
а не плясать с бубном.

будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил пару хп, а вы прозевали.
короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в студию. как вы, конкретно вы отслеживаете результат выполнения батча с патчем и принимаете решение жать commit или rollback

locky
кстати, flashback - он для всех редакций доступен? или - ставится
отдельно за доп. деньги?

flashback queries и flashback database во всех, включая бесплатную xe.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921568
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил
> пару хп, а вы прозевали.
Угу... А если вы, пардон, прощелкали клювом, не увидели, что у вас пакет
стал инвалидным, сделали коммит - вы будете делать "в 2 часа ночи" ... что?

А если заливая 10 пакетов, вы СРАЗУ увидели, что один из десяти пакетов
стал инвалидным - вы будете делать... что?

Если пакеты имеют перекрестную зависимость - и валидными они станут
только после создания всех пакетов? т.е. при создании пакета невозможно
определить - он невалидный "пока что" или "уже навсегда". И после
заливки полного списка пакетов - один из них - всё-таки остается
невалидным - мы откатываемся на час назад, похерив работу юзеров?

Я так понимаю, проблема распадается на две части:
1. Диагностика проблемных пакетов/процедур.
2. откат в случае проблем.

с п.1 - в оракле, вроде как, получше - с мс - вроде как - похуже.
с п.2 - наоборот, в МС -получше, в оракле - куда хуже :(
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921576
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuper
пока транзакция с созданием процедур не завершится процедуры не выполняются и результат второго скрипта:
Код: plaintext
1.
2.
3.
4.
5.
----
t1

------
t2 new

не понял что вы там меряли, надо было так:
set transaction isolation level read uncommitted
exec dbo.t1
waitfor delay '00:02:00'
exec dbo.t2

за 2 минуты думаю вы успеете подправит 2 процедурки. все происходит имено так как я описывал.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921590
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper wrote:
> а как это может быть даже теоритически?
> вот попробовал выполняю сразу два скрипта(сначала первый)
какой-то сомнительный способ...
Пока не завершился первый батч - процедуры №1 вообще нету.
Создать процы, в первую вставить задержку, запустить, а потом -
попробовать сделать альтер для второй процы
причем - альтер в сериализабле, а запуск первой процы - в реад коммитед.
и поглядеть - кто кого будет ждать, т.е. будет ли альтер ждать
завершения запуска процы.
Такого не пробовал - поэтому говорю "теоретически" :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921623
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По результату быстрого опыта:
нельзя запустить процу, пока не закомичен её альтер, но можно сделать
альтер, пока проца выполняется.
Т.е. ситуация описанная йо - в принципе, возможна?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921631
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
Угу... А если вы, пардон, прощелкали клювом, не увидели, что у вас пакет
стал инвалидным, сделали коммит - вы будете делать "в 2 часа ночи" ... что?

прощелкать валидность процедуры можно только если об этом не знать ну или не попытатся задуматся, а нормально ли прошел патч ... т.е. нужно быть реальной кухаркой, такие кухарки нормальными бд под ораклом не рулят, поверьте.

locky
А если заливая 10 пакетов, вы СРАЗУ увидели, что один из десяти пакетов
стал инвалидным - вы будете делать... что?

flashback ВСЕГО без разбору. Юзеров вы ОБЯЗАНЫ выгнать на время апдейта, иначе с бд преключится попа (странно что вы с таким опытом не задумывались о таких очевидных вещах).

locky
Я так понимаю, проблема распадается на две части:
1. Диагностика проблемных пакетов/процедур.
2. откат в случае проблем.

не совсем, если вы не можете диогностировать проблему, то какая разница удобно ли вы можете откатится ???
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921638
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!у меня то никаких проблем,

Вы знаете, у меня тоже. ;)

Yo.!у меня нормальные зависимоти и статусы хп в оракле. то что вы тут мечетесь между SCHEMABINDING и sp_depends, sys.sql_modules показывает, что нет у МС инструмента, есть набор каких-то заготовок/полуфабрикатов из которых может быть лет через 8 сиквельные ДБА получат, то что имеют ораклоиды ну очень давно.

Статусы хп - не панацея. locky это прекрасно продемонтсрировал. Можно с пеной у рта доказывать, что лучше\хуже валидность в оракле или отложенное разрешение имен в сиквел сервере. Главное, есть возможность определения зависимостей - а использовать ее или нет, каждый должен определить для себя сам.

Yo.!в противном случае тут меня бы завалили простенькими скриптами которые решают элементарную задачу - можно ли нажать commit.

Это настолько простенькие скрипты, что такому профессионалу как Вы (здесь нет сарказма) по имеющимся справочным данным не составит большого труда их реализовать самостоятельно. Тем более направление уже задано.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921664
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!прощелкать валидность процедуры можно только если об этом не знать ну или не попытатся задуматся, а нормально ли прошел патч ... т.е. нужно быть реальной кухаркой, такие кухарки нормальными бд под ораклом не рулят, поверьте.

И что изменится, если вместо валидности и оракл поставить депенденсис и сиквел сервер?
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921667
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> flashback ВСЕГО без разбору. Юзеров вы ОБЯЗАНЫ выгнать на время апдейта,
> иначе с бд преключится попа (странно что вы с таким опытом не
> задумывались о таких очевидных вещах).
Дык эта... не могу я выгнать ВСЕХ, дабы залить патч, затрагивающий
ОДНОГО :) ВСЕ - могут обидеться :)

> не совсем, если вы не можете диогностировать проблему, то какая разница
> удобно ли вы можете откатится ???
Вы исходите из предположения, что мы НИКОГДА И НИКАК не можем
диагностировать проблему - что, вообще говоря, неверное.
Да, существуют случаи, когда диагностирование - затруднено.
С другой стороны - никто не мешает добавить в патч запуск тест-кейса -
смок-теста, который скажет: всё ок или не всё ок - и, соответсвенно -
если "дым пошел" - сделать роллбэк.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921673
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Это настолько простенькие скрипты, что такому профессионалу как Вы (здесь нет сарказма) по имеющимся справочным данным не составит большого труда их реализовать самостоятельно. Тем более направление уже задано.
pkarklin & locky зачем морочить мне голову, если скриптик простенький, ну выложите, в чем проблема ?? я не вижу как из этих полуфабрикатов можно отследить ВСЕ зависимости, например сходу приходит в голову что поле может еще тип поменять ...
короче без скриптика дальнейший разговор сведется дурак - сам дурак.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921686
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
И что изменится, если вместо валидности и оракл поставить депенденсис и сиквел сервер?
депендесис не способна отследить даже переименование таблички (т.к. хранит ИД таблицы), не говоря уже о более сложных вещах, мы же вроде это уже выяснили !?
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921745
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!короче без скриптика дальнейший разговор сведется дурак - сам дурак.

Ну я же приводил скрипт, который выявляет зависимости для переименованной колонки. Чего Вам еще надо?!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE dbo.Table1(col1 int, col2 int)
GO

CREATE PROC dbo.TestProc
AS
    INSERT dbo.Table1 VALUES( 2 ,  2 )   
    UPDATE dbo.Table1
    SET col2 =  2 
    WHERE col1 =  1 
GO

EXEC sp_rename 'dbo.Table1.col2', 'col3', 'COLUMN'
GO

sp_refreshsqlmodule 'dbo.TestProc'
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921756
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!депендесис не способна отследить даже переименование таблички (т.к. хранит ИД таблицы),

Она и не остлеживает переименование. Она отслеживает зависимость объектов.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921773
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
Дык эта... не могу я выгнать ВСЕХ, дабы залить патч, затрагивающий
ОДНОГО :) ВСЕ - могут обидеться :)

а на то, что они запускают в одной транзакции хп из разных версий и как результат попа в бд они не обижаются ? наверно у нас сильно разные задачи ...

locky
Вы исходите из предположения, что мы НИКОГДА И НИКАК не можем
диагностировать проблему - что, вообще говоря, неверное.
Да, существуют случаи, когда диагностирование - затруднено.

бывают случаи !? я пока не увидел решения элементарного случая переименования таблицы.

locky
С другой стороны - никто не мешает добавить в патч запуск тест-кейса -
смок-теста, который скажет: всё ок или не всё ок - и, соответсвенно -
если "дым пошел" - сделать роллбэк.
Posted via ActualForum NNTP Server 1.4
долго, дорого, кухарка это делать уже не станет. а теперь плавно возращаемся к илюзии легкости администрирования mssql ...
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34921783
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin[quot Yo.!]короче без скриптика дальнейший разговор сведется дурак - сам дурак.

Ну я же приводил скрипт, который выявляет зависимости для переименованной колонки. Чего Вам еще надо?!

Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'sp_refreshsqlmodule'.
...
Рейтинг: 0 / 0
25 сообщений из 408, страница 11 из 17
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Microsoft задавит Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]