Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8   вперед  Ctrl      все
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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


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

USE AdventureWorks;
GO
CREATE PROC dbo.InvalidProc
AS
  SELECT * FROM dbo.NotExistingTable
GO
SELECT *
FROM sys.dm_sql_referenced_entities ('dbo.InvalidProc', 'OBJECT');
GO

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.
30 сен 09, 16:58    [7726035]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
pkarklin

Здрасте. Тут же чем кидали в сиквел, что нельзя узнать, валиден объект или нет, без "обращения" к нему.

если бы вы то же самое со сторед процедурой показали или показали бы как получить список инвалидных объектов БД, это было бы одно. а так вы показали еще один способ тыркнуть во вью и вылететь с эксепшеном. мы вроде и под 2005 с десяток способов валидации вью знаем.
на самом деле за эти годы ничего не изменилось, я все еще жду скриптик (раз уж инструмента по прежнему нет) который скажет ДБА можно ли нажать коммит после наката sql-патча. к стате по прежнему не вьезжаю как мсскл-ные ДБА живут без таких важных вещей.
30 сен 09, 17:11    [7726108]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Yo.!
если бы вы то же самое со сторед процедурой показали


CREATE PROC dbo.InvalidProc
Ничитатель?
30 сен 09, 17:39    [7726332]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Yo.!
я все еще жду скриптик (раз уж инструмента по прежнему нет) который скажет ДБА можно ли нажать коммит после наката sql-патча. к стате по прежнему не вьезжаю как мсскл-ные ДБА живут без таких важных вещей.

А я всё исчо жду скриптик, который после наката патча на орацл откатит мне патч взад, ежели там паче чаяния таки обнаружатся невалидные объекты
по прежнему не въезжаю, как оракловые ДБА живут без такой важной вещи, да еще и с пред и пост коммитом ДДЛ.
30 сен 09, 17:41    [7726351]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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

Пожалуйста:

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

object_name
--------------------------------------------------------------------------------------------------------------------------------
dbo.InvalidProc
dbo.V1

(2 row(s) affected)

Msg 208, Level 16, State 1, Line 1
Invalid object name 'T1'.
30 сен 09, 17:45    [7726405]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
locky

А я всё исчо жду скриптик, который после наката патча на орацл откатит мне патч взад, ежели там паче чаяния таки обнаружатся невалидные объекты
по прежнему не въезжаю, как оракловые ДБА живут без такой важной вещи, да еще и с пред и пост коммитом ДДЛ.

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

2pkarklin
если удастся победить этот дружественный инсталятор от МС, то поставлю mssql2008 express и буду смотреть.
30 сен 09, 17:59    [7726542]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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


Я дико извиняюсь, видимо я что-то подзабыл. А какая опа может случится, если мы накатываем DDL в транзакции, и которая, если не сможет наложить Sch-M блокировку на объект из-за активности пользователей тупо будет ждать, пока не отвалится с таймаутом и не откатит то, что успела понаделать?
30 сен 09, 18:11    [7726639]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
pkarklin

Я дико извиняюсь, видимо я что-то подзабыл. А какая опа может случится, если мы накатываем DDL в транзакции, и которая, если не сможет наложить Sch-M блокировку на объект из-за активности пользователей тупо будет ждать, пока не отвалится с таймаутом и не откатит то, что успела понаделать?


тост второй, круг третий
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=488306&pg=11#4883563
30 сен 09, 18:18    [7726680]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
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.

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.

Хотя, если Вам удасться возпроизвести то, что Вы сказали, с любопытством бы на это посмотрел.
30 сен 09, 20:15    [7727136]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Yo.!
учитывая, что я не смог до вас донести даже что за попа может приключится с мсскл если накатывать DDL если не выгнав пользователей, то уж синтаксис оракловых команд боюсь слегка за гранью вашего понимания...

Учитывая, что я не смог добится от вас, каким образом можно откатить неудачный патч с оракла, даже выгнав предварительно юзеров..... Или вы, вернувшись "из-за грани понимания" начнёте тёрки про резервные копии и проч.?
30 сен 09, 21:50    [7727358]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
pkarklin

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

может я чего не понял ? читаю говорится, что версионность в мсскл способена выполнять DDL в режиме версионности (ну собственно это лет 5 известно и понятно почему) и к тому же DDL из блокировочного RC вырубает версионные транзакции (а вот этого для меня новость). чего тут достаточного не понял совсем.

pkarklin

Хотя, если Вам удасться возпроизвести то, что Вы сказали, с любопытством бы на это посмотрел.

вы меня пугаете, все то же обсуждение:
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=488306&pg=11#4884359

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

locky

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

я обычно начинаю издеваться после третьего тупого сообщения, вы можете объяснить что вам не понятно в [url=https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=488306&pg=10#4880191]первых двух объяснениях [/quot] ?
30 сен 09, 22:30    [7727486]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
2locky
поправил глючек с урлом:
я обычно начинаю издеваться после третьего тупого сообщения, вы можете объяснить что вам не понятно в первых двух объяснениях ?
30 сен 09, 22:32    [7727494]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
2pkarklin
фразу "версионность в мсскл способена выполнять DDL в режиме версионности"
нужно читать как
"версионность в мсскл НЕ способна выполнять DDL в режиме версионности"
30 сен 09, 22:44    [7727529]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
2pkarklin
взял ваш скрипт, добавил @@error - у меня нифига не пашет:
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
получаю:
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
вываливает список всех процедур ...
30 сен 09, 23:26    [7727606]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
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?
А то я, по тупости своей (и по грани понимания) никак не разберу
30 сен 09, 23:51    [7727637]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
locky

А то я, по тупости своей (и по грани понимания) никак не разберу

забей, это за гранью твоего умишка
1 окт 09, 00:15    [7727671]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
locky
Member

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

А то я, по тупости своей (и по грани понимания) никак не разберу

забей, это за гранью твоего умишка

Да? Ну может быть.
А то мне сослепу показалось, что flashback database есть не во всех редакциях, и предложенное вами решение как-то не всегда работает, наверное.
Ну скажите что я - ошибался! Я так хочу верить в орацл :(
1 окт 09, 00:39    [7727689]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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

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


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

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

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.
1 окт 09, 08:23    [7727899]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
locky

Да? Ну может быть.

да точно, к гадалке не ходи.

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

значит перед накаткой патча в других редакциях будут делать бэкап.


pkarklin

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

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

pkarklin

И, собственно, причем тут проверка на @@error,и уж тем более после SELECT * FROM @T, которая ее обнулит.

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

pkarklin

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

тут совсем не понял, можно подробней: у кого были ? у фетча ? так он их все эксепшеном поймал, ошибки sp_rename тоже не мешали комититься.
1 окт 09, 12:33    [7729091]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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


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

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


Ошибки возникают при ошибке в зависимостях, и генерит эти ошибки SELECT к вьюхе.
1 окт 09, 12:46    [7729180]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Лет 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 системы).

Одна из основных проблем человека - проблема выбора.
1 окт 09, 12:48    [7729194]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
gds
1. Mssql требует меньше места, чем oracle.


Имелось ввиду меньше требует ресурсов.
1 окт 09, 12:52    [7729226]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
pkarklin

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

если колонка понятно, что везде, но вываливается же упоминание таблицы (не зависимо от того фигурирует там колонка или нет)


pkarklin
Ошибки возникают при ошибке в зависимостях, и генерит эти ошибки SELECT к вьюхе.

интересный подход ...
1 окт 09, 13:01    [7729307]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!
Guest
2gds

ваш пост говорит лишь о том, что вы с ораклом не знакомы даже на уровне презентаций сейзлов. ну а перлы типа "тесная интерация с Windows и AD" говорит, что и представление о мсскл у вас слега детское ...
1 окт 09, 13:10    [7729370]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
pkarklin
Member

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


Где вываливается название таблицы? Я же просил показать Вас весь скрипт и весь его вывод.
1 окт 09, 13:24    [7729454]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить