powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем отличаеться T-SQL от PL/SQL?
25 сообщений из 190, страница 3 из 8
Чем отличаеться T-SQL от PL/SQL?
    #36225733
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!че-то не вьехал зачем было селектить из некого sys.dm_sql_referenced_entities когда того же результата можно было бы добится сделав селект из вью.
в том разговоре мы вроде как обсуждали не способность сторед процедур отследить зависимости. вроде там же согласились, что набор костылей в мсскл расширился за последнее время но полноценного инструмента все еще нет.

Здрасте. Тут же чем кидали в сиквел, что нельзя узнать, валиден объект или нет, без "обращения" к нему. веденная динамическая вьюха, как раз позволяет выяснить валиден объект или нет. Можно привести пример и стаблицами в хранимых процедурах:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
USE AdventureWorks;
GO
CREATE PROC dbo.InvalidProc
AS
  SELECT * FROM dbo.NotExistingTable
GO
SELECT *
FROM sys.dm_sql_referenced_entities ('dbo.InvalidProc', 'OBJECT');
GO

Код: plaintext
1.
2.
3.
4.
Msg 2020, Level 16, State 1, Line 1
The dependencies reported for entity "dbo.InvalidProc" do not include references to columns. This is
either because the entity references an object that does not exist or because of an error in one or
more statements in the entity.  Before rerunning the query, ensure that there are no errors in the entity
and that all objects referenced by the entity exist.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225762
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Здрасте. Тут же чем кидали в сиквел, что нельзя узнать, валиден объект или нет, без "обращения" к нему.
если бы вы то же самое со сторед процедурой показали или показали бы как получить список инвалидных объектов БД, это было бы одно. а так вы показали еще один способ тыркнуть во вью и вылететь с эксепшеном. мы вроде и под 2005 с десяток способов валидации вью знаем.
на самом деле за эти годы ничего не изменилось, я все еще жду скриптик (раз уж инструмента по прежнему нет) который скажет ДБА можно ли нажать коммит после наката sql-патча. к стате по прежнему не вьезжаю как мсскл-ные ДБА живут без таких важных вещей.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225842
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!если бы вы то же самое со сторед процедурой показали

CREATE PROC dbo.InvalidProc
Ничитатель?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225848
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!я все еще жду скриптик (раз уж инструмента по прежнему нет) который скажет ДБА можно ли нажать коммит после наката sql-патча. к стате по прежнему не вьезжаю как мсскл-ные ДБА живут без таких важных вещей.
А я всё исчо жду скриптик, который после наката патча на орацл откатит мне патч взад, ежели там паче чаяния таки обнаружатся невалидные объекты
по прежнему не въезжаю, как оракловые ДБА живут без такой важной вещи, да еще и с пред и пост коммитом ДДЛ.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225876
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!,

Пожалуйста:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
USE AdventureWorks;
GO
BEGIN TRAN
GO
CREATE PROC dbo.InvalidProc
AS
  SELECT * FROM dbo.NotExistingTable
GO
CREATE TABLE dbo.T1(col1 int NOT NULL)
GO
CREATE VIEW dbo.V1 AS
  SELECT T.col1 FROM dbo.T1 T
GO
sp_rename 'dbo.T1.col1', 'col2', 'COLUMN';
GO

DECLARE @T TABLE(object_name sysname)
DECLARE @Foo TABLE(col1 int)

DECLARE
  @name sysname
DECLARE Cur CURSOR LOCAL STATIC FOR
SELECT SCHEMA_NAME(o.schema_id) + '.' + name FROM sys.objects o WHERE o.type IN ('P', 'V')

OPEN Cur
FETCH NEXT FROM Cur into @Name
WHILE @@FETCH_STATUS =  0  BEGIN
  BEGIN TRY
    INSERT @Foo SELECT referencing_minor_id FROM sys.dm_sql_referenced_entities (@name, 'OBJECT')
  END TRY
  BEGIN CATCH
    INSERT @T SELECT @name;
  END CATCH;
  FETCH NEXT FROM Cur into @Name  
END
CLOSE Cur
DEALLOCATE Cur

SELECT * FROM @T

IF @@ROWCOUNT >  0  ROLLBACK ELSE COMMIT
GO
SELECT * FROM T1

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
object_name
--------------------------------------------------------------------------------------------------------------------------------
dbo.InvalidProc
dbo.V1

(2 row(s) affected)

Msg 208, Level 16, State 1, Line 1
Invalid object name 'T1'.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225936
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
А я всё исчо жду скриптик, который после наката патча на орацл откатит мне патч взад, ежели там паче чаяния таки обнаружатся невалидные объекты
по прежнему не въезжаю, как оракловые ДБА живут без такой важной вещи, да еще и с пред и пост коммитом ДДЛ.
учитывая, что я не смог до вас донести даже что за попа может приключится с мсскл если накатывать DDL если не выгнав пользователей, то уж синтаксис оракловых команд боюсь слегка за гранью вашего понимания...

2pkarklin
если удастся победить этот дружественный инсталятор от МС, то поставлю mssql2008 express и буду смотреть.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225976
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!что за попа может приключится с мсскл если накатывать DDL если не выгнав пользователей

Я дико извиняюсь, видимо я что-то подзабыл. А какая опа может случится, если мы накатываем DDL в транзакции, и которая, если не сможет наложить Sch-M блокировку на объект из-за активности пользователей тупо будет ждать, пока не отвалится с таймаутом и не откатит то, что успела понаделать?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36225995
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Я дико извиняюсь, видимо я что-то подзабыл. А какая опа может случится, если мы накатываем DDL в транзакции, и которая, если не сможет наложить Sch-M блокировку на объект из-за активности пользователей тупо будет ждать, пока не отвалится с таймаутом и не откатит то, что успела понаделать?

тост второй, круг третий
/topic/488306&pg=11#4883563
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226198
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!не понял, с какой стати юзерские транзакции на read commited будут вести себя как serializable ?? юзерская транзакция выполняет хп1, это ей никто не запретит, дадее запускается батч с патчем, который раставляет блокировки на хп1 и хп2, теперь юзерская транзакция честно дожидается обновления и снятие блокировок. теперь ничто не запретит ей запустить хп2 уже новой версии, обычный read commited.

А зачем SERIALIZABLE? Версионности достаточно.

BOL:

SQL Server does not keep multiple versions of system metadata. Data definition language (DDL) statements on tables and other database objects (indexes, views, data types, stored procedures, and common language runtime functions) change metadata. If a DDL statement modifies an object, any concurrent reference to the object under snapshot isolation causes the snapshot transaction to fail. Read-committed transactions do not have this limitation when the READ_COMMITTED_SNAPSHOT database option is ON.

For example, a database administrator executes the following ALTER INDEX statement.

Код: plaintext
1.
2.
3.
4.
USE AdventureWorks;
GO
ALTER INDEX AK_Employee_LoginID
    ON HumanResources.Employee REBUILD;
GO


Any snapshot transaction that is active when the ALTER INDEX statement is executed receives an error if it attempts to reference the HumanResources.Employee table after the ALTER INDEX statement is executed. Read-committed transactions using row versioning are not affected.

Хотя, если Вам удасться возпроизвести то, что Вы сказали, с любопытством бы на это посмотрел.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226306
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!учитывая, что я не смог до вас донести даже что за попа может приключится с мсскл если накатывать DDL если не выгнав пользователей, то уж синтаксис оракловых команд боюсь слегка за гранью вашего понимания...

Учитывая, что я не смог добится от вас, каким образом можно откатить неудачный патч с оракла, даже выгнав предварительно юзеров..... Или вы, вернувшись "из-за грани понимания" начнёте тёрки про резервные копии и проч.?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226362
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
А зачем SERIALIZABLE? Версионности достаточно.
может я чего не понял ? читаю говорится, что версионность в мсскл способена выполнять DDL в режиме версионности (ну собственно это лет 5 известно и понятно почему) и к тому же DDL из блокировочного RC вырубает версионные транзакции (а вот этого для меня новость). чего тут достаточного не понял совсем.

pkarklin
Хотя, если Вам удасться возпроизвести то, что Вы сказали, с любопытством бы на это посмотрел.
вы меня пугаете, все то же обсуждение:
/topic/488306&pg=11#4884359

ЗЫ. проверил на 2008 в режиме RC с включеной версонностью. никаких чудес и мусор в БД...

locky
Учитывая, что я не смог добится от вас, каким образом можно откатить неудачный патч с оракла, даже выгнав предварительно юзеров..... Или вы, вернувшись "из-за грани понимания" начнёте тёрки про резервные копии и проч.?
я обычно начинаю издеваться после третьего тупого сообщения, вы можете объяснить что вам не понятно в /topic/488306&pg=10#4880191]первых двух объяснениях [/quot] ?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226366
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2locky
поправил глючек с урлом:
я обычно начинаю издеваться после третьего тупого сообщения, вы можете объяснить что вам не понятно в первых двух объяснениях ?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226378
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pkarklin
фразу "версионность в мсскл способена выполнять DDL в режиме версионности"
нужно читать как
"версионность в мсскл НЕ способна выполнять DDL в режиме версионности"
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226418
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pkarklin
взял ваш скрипт, добавил @@error - у меня нифига не пашет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
BEGIN TRAN
GO
sp_rename 'dbo.a.myname', 'col1', 'COLUMN';
GO
sp_rename 'dbo.b.shit', 'col1', 'COLUMN';
GO

DECLARE @T TABLE(object_name sysname)
DECLARE @Foo TABLE(col1 int)

DECLARE
  @name sysname
DECLARE Cur CURSOR LOCAL STATIC FOR
SELECT SCHEMA_NAME(o.schema_id) + '.' + name FROM sys.objects o WHERE o.type IN ('P', 'V')

OPEN Cur
FETCH NEXT FROM Cur into @Name
WHILE @@FETCH_STATUS =  0  BEGIN
  BEGIN TRY
    INSERT @Foo SELECT referencing_minor_id FROM sys.dm_sql_referenced_entities (@name, 'OBJECT')
  END TRY
  BEGIN CATCH
    INSERT @T SELECT @name;
  END CATCH;
  FETCH NEXT FROM Cur into @Name  
END
CLOSE Cur
DEALLOCATE Cur

SELECT * FROM @T

IF @@ROWCOUNT >  0  and @@error <>  0  ROLLBACK ELSE COMMIT
GO
SELECT * FROM a
получаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Caution: Changing any part of an object name could break scripts and stored procedures.
Caution: Changing any part of an object name could break scripts and stored procedures.

( 0  row(s) affected)

( 1  row(s) affected)

( 0  row(s) affected)

( 1  row(s) affected)

( 0  row(s) affected)

( 1  row(s) affected)

( 3  row(s) affected)
Msg  3930 , Level  16 , State  1 , Line  26 
The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.
Msg  3998 , Level  16 , State  1 , Line  1 
Uncommittable transaction is detected at the end of the batch. The transaction is rolled back.

( 8  row(s) affected)

SELECT * FROM @T
вываливает список всех процедур ...
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226438
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!2locky
поправил глючек с урлом:
я обычно начинаю издеваться после третьего тупого сообщения, вы можете объяснить что вам не понятно в первых двух объяснениях ?
ну да, ну да, флэшбек на N минут назад.... как я мог забыть про такое?
Нету мне никакого прощения. Не-ту.
Одно только волнует меня
в тынце http://www.oracle.com/technology/products/database/oracle11g/pdf/database-11g-product-family-technical-whitepaper.pdf
В таблице "Feature and Option Availability Matrix" в строке "Flashback Database" - что значат буковки NNY?
А то я, по тупости своей (и по грани понимания) никак не разберу
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226458
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
А то я, по тупости своей (и по грани понимания) никак не разберу
забей, это за гранью твоего умишка
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226466
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!locky
А то я, по тупости своей (и по грани понимания) никак не разберу
забей, это за гранью твоего умишка
Да? Ну может быть.
А то мне сослепу показалось, что flashback database есть не во всех редакциях, и предложенное вами решение как-то не всегда работает, наверное.
Ну скажите что я - ошибался! Я так хочу верить в орацл :(
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36226601
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!,

авторвзял ваш скрипт, добавил @@error - у меня нифига не пашет:

А весь скриптик можно увидеть, включая, создание таблиц и процедур, список которых Вы потом получаете? И, собственно, причем тут проверка на @@error,и уж тем более после SELECT * FROM @T, которая ее обнулит.

А так как были ошибки, то совершенно справедливо:

Код: plaintext
1.
2.
3.
Msg 3930, Level 16, State 1, Line 26
The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.
Msg 3998, Level 16, State 1, Line 1
Uncommittable transaction is detected at the end of the batch. The transaction is rolled back.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227164
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
Да? Ну может быть.
да точно, к гадалке не ходи.

lockyА то мне сослепу показалось, что flashback database есть не во всех редакциях, и предложенное вами решение как-то не всегда работает, наверное.
Ну скажите что я - ошибался! Я так хочу верить в орацл :(
значит перед накаткой патча в других редакциях будут делать бэкап.


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

pkarklin
И, собственно, причем тут проверка на @@error,и уж тем более после SELECT * FROM @T, которая ее обнулит.
при том что я сначала ошибся в формате одного из sp_rename и получил закомиченный ренейм только одного переименования, читай накотлось пол патча. так низя ...

pkarklin
А так как были ошибки, то совершенно справедливо:

тут совсем не понял, можно подробней: у кого были ? у фетча ? так он их все эксепшеном поймал, ошибки sp_rename тоже не мешали комититься.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227189
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!лениво все доставать, но я вроде понял. скрипт вываливает все процедуры где упоминается таблица с переименованой колонкой. т.е. не может отличить нормальные от покареженных.

Гм... А разве не все хп, в которых "упоминается" переименованная колонка, покореженные?

автортут совсем не понял, можно подробней: у кого были ? у фетча ? так он их все эксепшеном поймал, ошибки sp_rename тоже не мешали комититься.

Ошибки возникают при ошибке в зависимостях, и генерит эти ошибки SELECT к вьюхе.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227194
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лет 5-6 работаю с ораклом. Около 6 месяцев начал снова изучать MSSQL 2008. До этого лет 9 назад начинал администратором БД (MSSQL 6.5, 7, 2000 SP3).
Что могу сказать.
Для БДА:
1. Оракл достаточно мощный инструмент (если говорим о 9.2 и выше), но в большенстве тех задач, которые решаются повседневно MSSQL и Oracle на одном уровне.
2. Оракл кросс-платформенный.
3. MSSQL базы легко переносимы.
4. MSSQL тесная интерация с Windows и AD.
5. Больщенство ПО по Windows заточены либо на MSSQL либо на MDAC.
6. Удобный интерфейс администрирования и прогона скриптов. Бесплатные утилиты SQL SMS и Query Analizer.

Для Прогеров:
1. Тех кто пишет на vusial c/c#/vb/vb.net однозначно mssql. Бозее дружелюбный интерфейс, установщик сам включает в состав дистрибутив mssql и разворачивает его.
2. 2005/2008 дает оргомный возможности встраивания своих процедур, триггеров, и др. написаных на NET языках SQL CLR.
3. ИМХО, Единственный весомый плюс оракла вижу это пакеты и легкий просмотр инфалидных объектов по БД. Но как было показано выше можно посмотреть и на mssql.
4. Если выбирать oracle надо немного погружаться в администрирование. т.е. оптимальной настройки PGA и SGA. т.к. оракл выделяет всю память (указанную в конфиге) под себя, а MSSQL по мере надобности (что очень незаменимо для девелопера), но можно настроить и что бы тоже выделял.
5. Ну и наконец LINQ to SQL и ADO.NET.

Для БД:
1. Mssql требует меньше места, чем oracle.
2. По MSSQL много рускоязычной документации: BOL, MSDN, SQL.RU (специалисты в MSSQL форуме более активные и общительные чем в ORACLE, убедился на своем опыте.)
3. По Oracle оффициальный источник в основном на иностранном языке.

Итог: ИМХО MSSQL более приспасоблен к решениям домашнего пользователя, а также разадач малого и среднего бизнеса. Также находит свое применение среди крупных проектов. Oracle ориентирован на мега БД для хранения централизованной информации например MainFrame (в основном *nix системы).

Одна из основных проблем человека - проблема выбора.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227208
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gds1. Mssql требует меньше места, чем oracle.


Имелось ввиду меньше требует ресурсов.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227235
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Гм... А разве не все хп, в которых "упоминается" переименованная колонка, покореженные?
если колонка понятно, что везде, но вываливается же упоминание таблицы (не зависимо от того фигурирует там колонка или нет)


pkarklinОшибки возникают при ошибке в зависимостях, и генерит эти ошибки SELECT к вьюхе.
интересный подход ...
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227266
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2gds

ваш пост говорит лишь о том, что вы с ораклом не знакомы даже на уровне презентаций сейзлов. ну а перлы типа "тесная интерация с Windows и AD" говорит, что и представление о мсскл у вас слега детское ...
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #36227301
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!если колонка понятно, что везде, но вываливается же упоминание таблицы (не зависимо от того фигурирует там колонка или нет)

Где вываливается название таблицы? Я же просил показать Вас весь скрипт и весь его вывод.
...
Рейтинг: 0 / 0
25 сообщений из 190, страница 3 из 8
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем отличаеться T-SQL от PL/SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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