Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 17   вперед  Ctrl
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
locky

А давайте отвянем от всех прочих задач (включая накатывания сервис пака
на сервер)- и сосредоточимся на той, что я озвучил, ага? Т.е.
накатывание патча на прикладную задачу - и восстановление в случае сбоя.

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

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

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

на живых клиентах имхо можно гонять разве, что патчик который правит глючки хп, но это в оракле опять же гораздо удобней. у mssql нет аналога create or replace procedure :)
6 ноя 07, 20:59    [4882198]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Yo.!

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

Если создание обоих хп идет в одной транзакции, то как клиент запустит разные версии?
6 ноя 07, 22:26    [4882385]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
SergSuper

Если создание обоих хп идет в одной транзакции, то как клиент запустит разные версии?

ну например так же как он получает не консистентный набор на дефолтном уровне изолированости транзакций ...
6 ноя 07, 22:48    [4882454]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
я не получаю. что я делаю не так ? как я подозреваю я получил бы это сообщение если бы дропнул всю табличку, а не переименовал лишь одно поле.


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

С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 блокировку на модифицируемые объекты, что не даст возможности их запустить до фиксации транзакции в батче.
7 ноя 07, 08:44    [4882918]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
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.
7 ноя 07, 11:05    [4883563]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
сотни таблиц, тысячи процедур и не поддающее подсчетам кол-во колонок, как я должен использовать ?


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

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


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

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

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


Наверное можно проще - приведите скриптик, или что-то там еще, чтобы воспроизвести описанное Вами.
7 ноя 07, 11:27    [4883777]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.! wrote:
> глючки хп, но это в оракле опять же гораздо удобней. у mssql нет аналога
> create or replace procedure :)

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

7 ноя 07, 11:55    [4883988]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

теоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).
но даже выгнав юзеров для отката патча нам достаточно сделать rollback,
а не плясать с бубном.
кстати, flashback - он для всех редакций доступен? или - ставится
отдельно за доп. деньги?

Posted via ActualForum NNTP Server 1.4

7 ноя 07, 12:03    [4884066]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin

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

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

pkarklin

Наверное можно проще - приведите скриптик, или что-то там еще, чтобы воспроизвести описанное Вами.

попробую
7 ноя 07, 12:16    [4884181]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
locky
теоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).
но даже выгнав юзеров для отката патча нам достаточно сделать rollback,
а не плясать с бубном.
кстати, flashback - он для всех редакций доступен? или - ставится
отдельно за доп. деньги?

а как это может быть даже теоритически?
вот попробовал выполняю сразу два скрипта(сначала первый)
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

set transaction isolation level read uncommitted
exec dbo.t1
exec dbo.t2

пока транзакция с созданием процедур не завершится процедуры не выполняются и результат второго скрипта:
----
t1

------
t2 new
7 ноя 07, 12:23    [4884249]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
locky

теоретически - можем нарваться.
Для этого случая - как раз можно и выгнать юзеров из базы (хотя, как
грится - зависит от).

я знаю

locky

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

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

locky

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

flashback queries и flashback database во всех, включая бесплатную xe.
7 ноя 07, 12:27    [4884287]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.! wrote:
> будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил
> пару хп, а вы прозевали.
Угу... А если вы, пардон, прощелкали клювом, не увидели, что у вас пакет
стал инвалидным, сделали коммит - вы будете делать "в 2 часа ночи" ... что?

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

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

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

с п.1 - в оракле, вроде как, получше - с мс - вроде как - похуже.
с п.2 - наоборот, в МС -получше, в оракле - куда хуже :(

Posted via ActualForum NNTP Server 1.4

7 ноя 07, 12:35    [4884347]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
SergSuper

пока транзакция с созданием процедур не завершится процедуры не выполняются и результат второго скрипта:
----
t1

------
t2 new

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

за 2 минуты думаю вы успеете подправит 2 процедурки. все происходит имено так как я описывал.
7 ноя 07, 12:37    [4884359]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

SergSuper wrote:
> а как это может быть даже теоритически?
> вот попробовал выполняю сразу два скрипта(сначала первый)
какой-то сомнительный способ...
Пока не завершился первый батч - процедуры №1 вообще нету.
Создать процы, в первую вставить задержку, запустить, а потом -
попробовать сделать альтер для второй процы
причем - альтер в сериализабле, а запуск первой процы - в реад коммитед.
и поглядеть - кто кого будет ждать, т.е. будет ли альтер ждать
завершения запуска процы.
Такого не пробовал - поэтому говорю "теоретически" :)

Posted via ActualForum NNTP Server 1.4

7 ноя 07, 12:39    [4884374]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

По результату быстрого опыта:
нельзя запустить процу, пока не закомичен её альтер, но можно сделать
альтер, пока проца выполняется.
Т.е. ситуация описанная йо - в принципе, возможна?

Posted via ActualForum NNTP Server 1.4

7 ноя 07, 12:48    [4884433]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
locky

Угу... А если вы, пардон, прощелкали клювом, не увидели, что у вас пакет
стал инвалидным, сделали коммит - вы будете делать "в 2 часа ночи" ... что?

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

locky

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

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

locky

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

не совсем, если вы не можете диогностировать проблему, то какая разница удобно ли вы можете откатится ???
7 ноя 07, 12:50    [4884447]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
у меня то никаких проблем,


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

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


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

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


Это настолько простенькие скрипты, что такому профессионалу как Вы (здесь нет сарказма) по имеющимся справочным данным не составит большого труда их реализовать самостоятельно. Тем более направление уже задано.
7 ноя 07, 12:50    [4884455]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
прощелкать валидность процедуры можно только если об этом не знать ну или не попытатся задуматся, а нормально ли прошел патч ... т.е. нужно быть реальной кухаркой, такие кухарки нормальными бд под ораклом не рулят, поверьте.


И что изменится, если вместо валидности и оракл поставить депенденсис и сиквел сервер?
7 ноя 07, 13:02    [4884503]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

> не совсем, если вы не можете диогностировать проблему, то какая разница
> удобно ли вы можете откатится ???
Вы исходите из предположения, что мы НИКОГДА И НИКАК не можем
диагностировать проблему - что, вообще говоря, неверное.
Да, существуют случаи, когда диагностирование - затруднено.
С другой стороны - никто не мешает добавить в патч запуск тест-кейса -
смок-теста, который скажет: всё ок или не всё ок - и, соответсвенно -
если "дым пошел" - сделать роллбэк.

Posted via ActualForum NNTP Server 1.4

7 ноя 07, 13:04    [4884512]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin

Это настолько простенькие скрипты, что такому профессионалу как Вы (здесь нет сарказма) по имеющимся справочным данным не составит большого труда их реализовать самостоятельно. Тем более направление уже задано.

pkarklin & locky зачем морочить мне голову, если скриптик простенький, ну выложите, в чем проблема ?? я не вижу как из этих полуфабрикатов можно отследить ВСЕ зависимости, например сходу приходит в голову что поле может еще тип поменять ...
короче без скриптика дальнейший разговор сведется дурак - сам дурак.
7 ноя 07, 13:04    [4884519]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin

И что изменится, если вместо валидности и оракл поставить депенденсис и сиквел сервер?

депендесис не способна отследить даже переименование таблички (т.к. хранит ИД таблицы), не говоря уже о более сложных вещах, мы же вроде это уже выяснили !?
7 ноя 07, 13:06    [4884533]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
короче без скриптика дальнейший разговор сведется дурак - сам дурак.


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

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'
7 ноя 07, 13:18    [4884618]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
депендесис не способна отследить даже переименование таблички (т.к. хранит ИД таблицы),


Она и не остлеживает переименование. Она отслеживает зависимость объектов.
7 ноя 07, 13:20    [4884632]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
locky

Дык эта... не могу я выгнать ВСЕХ, дабы залить патч, затрагивающий
ОДНОГО :) ВСЕ - могут обидеться :)

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

locky

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

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

locky

С другой стороны - никто не мешает добавить в патч запуск тест-кейса -
смок-теста, который скажет: всё ок или не всё ок - и, соответсвенно -
если "дым пошел" - сделать роллбэк.
Posted via ActualForum NNTP Server 1.4

долго, дорого, кухарка это делать уже не станет. а теперь плавно возращаемся к илюзии легкости администрирования mssql ...
7 ноя 07, 13:24    [4884656]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin
[quot Yo.!]короче без скриптика дальнейший разговор сведется дурак - сам дурак.


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

Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'sp_refreshsqlmodule'.
7 ноя 07, 13:25    [4884672]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить