Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
День добрый.
Есть мелкий вопрос: как выполнить такой вот запрос на MSSQL 2005

EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO

update sysobjects
set status = status | 536870912
where xtype = 'P' and status >= 0
GO

EXEC sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE
GO

на MSSQL 2000 выполняется, а на 2005 даёт ошибку: "Ad hoc updates to system catalogs are not allowed."

А меня софт-зараза, видит только процедуры со "sysobjects.status > 0" :-(
25 сен 09, 16:45    [7709540]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
В 2005 запрещено явное изменение системных таблиц
А многие физические системные таблицы из 2000го в 2005 превратились в представления
25 сен 09, 16:49    [7709564]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
Glory,

Тобишь, никаким заковыристым путём мне эту колонку status не изменить?
25 сен 09, 16:59    [7709616]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
kano
Glory,

Тобишь, никаким заковыристым путём мне эту колонку status не изменить?

Измените ваш софт, который "зараза, видит только процедуры со "sysobjects.status > 0"
Пусть он видит все процедуры
25 сен 09, 17:05    [7709646]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
как вариант выходите в DAC, там можно такое сделать.
-------------------------------------
Jedem Das Seine
25 сен 09, 17:09    [7709680]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
Maxx
как вариант выходите в DAC, там можно такое сделать.
-------------------------------------
Jedem Das Seine


В ДАК вышел. Но update sysobjects всё равно даёт ошибку.
Я не знаю как посмотреть исходный код вьюшки sysobjects, а то бы попробовал проапдейтить нужную таблицу.

Glory
Измените ваш софт...


Был бы мой - давно бы изменил. Исходники недоступны.
25 сен 09, 17:29    [7709791]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
CREATE VIEW sys.objects AS  
 SELECT name, object_id, principal_id, schema_id, parent_object_id,  
  type, type_desc, create_date, modify_date,  
  is_ms_shipped, is_published, is_schema_published  
 FROM sys.objects$  
-------------------------------------
Jedem Das Seine
25 сен 09, 17:57    [7709940]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
И сиквел сервер должен быть запущен в single userr
25 сен 09, 18:17    [7710038]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
Maxx
CREATE VIEW sys.objects AS  
 SELECT name, object_id, principal_id, schema_id, parent_object_id,  
  type, type_desc, create_date, modify_date,  
  is_ms_shipped, is_published, is_schema_published  
 FROM sys.objects$  
-------------------------------------
Jedem Das Seine


Спасибо, но мне нужен код вьюхи sys.sysobjects
Подскажите где самому глянуть.


DeColo®es
И сиквел сервер должен быть запущен в single userr


Для того, чтобы проапдейтить системные таблицы или чтоб пересоздать вьюшку?
28 сен 09, 10:50    [7714208]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
kano
Для того, чтобы проапдейтить системные таблицы или чтоб пересоздать вьюшку?
И то и другое.
Но для того, чтобы системное представление после изменения опять стало системным, нужно будет сделать еще какие-то приседания. Я в свое время так и не добился этого (но у меня особо и цели никакой не стояло - просто экспериментировал)...
28 сен 09, 12:08    [7714634]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
shalomb
Member

Откуда: Израиль
Сообщений: 77
А для чего изменять ,что скучно что сервак давно не падал ?????
28 сен 09, 12:14    [7714688]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
kano,
exec sp_helptext 'sys.sysobjects'
28 сен 09, 12:18    [7714715]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
Maxx,

Спасибо.
Код вьюхи получил, строку изменил. А вот пересоздать её для БД maindb немогу.
Хотя база в синглюзер и подключился я под DAC :-(
Мне и изменить то нада константу с convert(int, 0) на convert(int, 1), .
Помогите с идеей.

use maindb;
go
drop view sys.sysobjects;
go
CREATE VIEW sys.sysobjects AS  
 SELECT name, id,  
 xtype = type collate database_default,  
 uid = convert(smallint, nsid),  
 info = convert(smallint, 0),  
 status = convert(int, 1),  
 base_schema_ver = convert(int, 0),  
 replinfo = convert(int, 0),  
 parent_obj = pid,  
 crdate = created,  
 ftcatid = convert(smallint, case type  
  when 'U' then OBJECTPROPERTY(id, 'TableFulltextCatalogId')  
  else 0 end),  
 schema_ver = convert(int, 0),  
 stats_schema_ver = convert(int, 0),  
 type = convert(char(2), case type  
  when 'UQ' then 'K' when 'PK' then 'K'  
  else type collate database_default end),  
 userstat = convert(smallint, case type when 'S' then 1 when 'U' then 1 else 0 end),  
 sysstat = convert(smallint, case type  
  when 'S' then 1 when 'V' then 2 when 'U' then 3 when 'P' then 4 when 'RF' then 4  
  when 'X' then 4 when 'D' then 6 when 'R' then 7 when 'TR' then 8  
  when 'PK' then 9 when 'UQ' then 9 when 'C' then 10 when 'F' then 11  
  else 0 end),  
 indexdel = convert(smallint, 0),  
 refdate = created,  
 version = convert(int, 0),  
 deltrig = convert(int, case type  
  when 'U' then OBJECTPROPERTY(id,'TableDeleteTrigger')  
  when 'TR' then pid else 0 end),  
 instrig = convert(int, case type  
  when 'U' then OBJECTPROPERTY(id,'TableInsertTrigger')  
  else 0 end),  
 updtrig = convert(int, case type  
  when 'U' then OBJECTPROPERTY(id,'TableUpdateTrigger')  
  else 0 end),  
 seltrig = convert(int, 0),  
 category = convert(int, case when type = 'D' and pid <> 0 then 2048 else 0 end  
  + case when type = 'P' and (status & 256) <> 0 then 16 else 0 end  
  + (status & 1)*2 + (status & 16)*2),  
 cache = convert(smallint, 0)  
 FROM sys.sysschobjs  
 WHERE nsclass = 0 AND pclass = 1 --AND has_access('CO', id) = 1  
 UNION ALL  
 SELECT name, id = object_id,  
 xtype = type collate database_default,  
 uid = convert(smallint, schema_id),  
 info = convert(smallint, 0),  
 status = convert(int, 1),  
 base_schema_ver = convert(int, 0),  
 replinfo = convert(int, 0),  
 parent_obj = 0,  
 crdate = create_date,  
 ftcatid = convert(smallint, 0),  
 schema_ver = convert(int, 0),  
 stats_schema_ver = convert(int, 0),  
 type = type collate database_default,  
 userstat = convert(smallint, 0),  
 sysstat = convert(smallint, case type when 'V' then 2 when 'P' then 4 when 'X' then 4 else 0 end),  
 indexdel = convert(smallint, 0),  
 refdate = create_date,  
 version = convert(int, 0),  
 deltrig = convert(int, 0),  
 instrig = convert(int, 0),  
 updtrig = convert(int, 0),  
 seltrig = convert(int, 0),  
 category = convert(int, 2),  
 cache = convert(smallint, 0)  
 FROM sys.system_objects$
go
28 сен 09, 13:46    [7715243]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
kano,

Честно,вы себе яму сами роете
Glory вам уже ответил
и почитайте БОЛ по поводу как все таки пользоваться ДАКом :)
И уж савсем порочно,пытаться проальтерить системный вьюс
28 сен 09, 13:53    [7715286]     Ответить | Цитировать Сообщить модератору
 Re: update sysobjects на MSSQL 2005  [new]
kano
Member

Откуда:
Сообщений: 59
Maxx,

Ну рыть себе яму я не буду :-)
Все эти извращения я на тестовом сервере делаю, так что если и упадёт то только на благо науки.
Насчёт ДАКа Вы правы - главу бегло просмотрел, теперь поштудирую.
Вопрос закрыт - будем стучать к разработчикам ПО.
28 сен 09, 14:14    [7715417]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить