Вопрос к DBA

User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Вопрос к DBA

Post by CBETA* »

Подскажите пожалуиста, сушествует ли возможность для DBA запорграмировать уничтожение таблиц которие создани ранее чем какое-то время ( к примеру неделю) назад от настояшего времени?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Ответьте на вопрос N1
Самый главный
Подумайте какой :)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:Ответьте на вопрос N1
Самый главный
Подумайте какой :)

Dmitry67,
Я не так спрашиваю?
..меня интерисует как чистить вспомогателюную ДБ от таблиц недельнои давности.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

О Господи
СВЕТА
Какая у Вас база данных ?????????????????????????????????????????????????????????????????????????????????????????????????????
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:О ...

MS SQL
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Re: Вопрос к DBA

Post by vc »

CBETA* wrote:Подскажите пожалуиста, сушествует ли возможность для DBA запорграмировать уничтожение таблиц которие создани ранее чем какое-то время ( к примеру неделю) назад от настояшего времени?


It's unclear what database we are talking about here but anyway...

In Oracle you can schedule a job which would periodically

1. delete rows based on some timestamp that has to be maintained by an application:

delete from t1 where ts <= sysdate - 7

... or ..

2. drop partitions in a table partitioned by week (more efficient than 1).

In MS SQL, Server you can do (1).

If you do not have a timestamp, then you cannot determine what data can be expired.


However, the above is applicable to data that were *designed* to age out -- in all other cases there is no simple criterium to determine whether the rows/tables are no longer needed by some obscure application. Here, a cleanup should be done manually after negotiations (and subsequent approval) with/of all the probable users


VC
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

Можно. надо будет немного динамического SQL.
Единственное НО - это FK. Если они есть то просто так таблицы не поудаляешь.

смотрите таблицу sysobjects в вашей базе. Там есть явки, даты и т.п.
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

katit wrote:Можно. надо будет немного динамического SQL.
Единственное НО - это FK. Если они есть то просто так таблицы не поудаляешь.

смотрите таблицу sysobjects в вашей базе. Там есть явки, даты и т.п.


Спасибо!
В sysobjects нашла crdate.
а где посмотреть owner of the table where xtype = 'U'?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Почему все как партизаны скрывают главное - какая база ?

В MS SQL в sysobjects есть дата тсоздания таблицы
Но учтите - это дата создания таблицы физически
То есть если ктото создал таблицу а потом с помощью Enterprise изменил ее структуру (при этом старая таблица переименовывается, создается новая, данные копируются, и старая удаляется) дата будет содержать не то что Вы одилаете

Наконец Вы уверены что жто нужно ?
Не всяакий production DBA может спать спокойно зная что процесс автоматически дропает таблицы
А почему недостаточно штатных средств ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:Почему все как партизаны скрывают главное - какая база ?


наверное потому что не ДБА думают что никаких других баз не сушествует, кроме тек с которими они рабоитают ;)

Dmitry67 wrote:Наконец Вы уверены что жто нужно ?
Не всяакий production DBA может спать спокойно зная что процесс автоматически дропает таблицы
А почему недостаточно штатных средств ?


Наш ДБА решил удалять все user таблици из вспомогательнои бази на виходних.
Я его просила поменять процесс и удалять таблици недельнои давности, он говорит что етого он сделать не может, а мне кажется что ему просто лень.
...вот я и ршиле с божеи ( то есть вашеи) помошью написать script котории он может зашить в job и ранить себе хоть каждии день
- и волки будут сити, и заици ( таблици ) живи...
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Declare @tableName varchar(1000) , @Sql varchar(5000)

declare Cur cursor for
select [name] from sysobjects where xtype ='U' and crdate < dateadd(dd, -7, getdate())

open Cur
fetch next from Cur into @tableName
while @@fetch_status = 0
begin

select @Sql ='drop table [' + @tableName + ']'
print @Sql
exec (@Sql)


fetch next from Cur into @tableName
end

CLOSE Cur
DEALLOCATE Cur

--------пральна?
-- не не пральна, откуда ownership выковырить?
Last edited by CBETA* on 08 Jun 2004 19:16, edited 1 time in total.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Чтото здесь не так
Почему таблицы которые создают пользователи надо удалять ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

они сблаговолили создать временную базу данних чтоб ми могли тестировать на stage environment....
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

CBETA* wrote:-- не не пральна, откуда ownership выковырить?


BOL сказал что:
uid smallint User ID of owner object.
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

Ах, да - sysusers и т.п. это следующий шаг
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

CBETA* wrote:они сблаговолили создать временную базу данних чтоб ми могли тестировать на stage environment....


Так что каждый пользователь на жтой базе с нуля создает всю схему под своим user ? И делает все нужные inserts для таблиц справочников ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:
CBETA* wrote:они сблаговолили создать временную базу данних чтоб ми могли тестировать на stage environment....


Так что каждый пользователь на жтой базе с нуля создает всю схему под своим user ? И делает все нужные inserts для таблиц справочников ?

da.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Ну если у каждого пользователя есть скрипт который воссоздает всю базу с нуля то в чем проблема его запустить утром ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

katit wrote:Ах, да - sysusers и т.п. это следующий шаг

Получилось! огромное спасибо!!! :
Declare @tableName varchar(1000) , @Sql varchar(5000), @user varchar(40)

declare Cur cursor for
select s.[name], u.[name] from sysobjects s
inner join sysusers u on s.uid = u.uid
where xtype ='U' and crdate < dateadd(dd, -7, getdate())


open Cur
fetch next from Cur into @tableName, @user
while @@fetch_status = 0
begin

select @Sql ='drop table [' + @user + '].[' + @tableName + ']'
print @Sql
exec (@Sql)


fetch next from Cur into @tableName, @user
end

CLOSE Cur
DEALLOCATE Cur
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:Ну если у каждого пользователя есть скрипт который воссоздает всю базу с нуля то в чем проблема его запустить утром ?

причина таже что и у ДБА - лень!
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Тогда я бы принял самое ленивое решение :)
Раз пользователи такие умные что могут базы с нуля скриптом поставить то я бы вообще ничего не чистил а оставил бы жто responsibility юзера
В крайнем случае если пользователь напорточал то скриптом побоным Вашему я бы сносил все объекты пользователя
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:...если пользователь напорточал то скриптом побоным Вашему я бы сносил все объекты пользователя

а что в моем скриптe не правильно?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Да нет
Скрипт правильный
Я про консерваторию, в смысле про использование скрипта
Всякое бывает, но обычно такое очень в специальныз случаях надо делать
Но скрипты с подобной структурой используют очень часто, например чтобы делать dbcc dbreindex итд
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
CBETA*
Уже с Приветом
Posts: 3417
Joined: 23 May 2001 09:01
Location: Laguna Beach , CA

Post by CBETA* »

Dmitry67 wrote:..Я про консерваторию


Ааааа....
В консерватории у нас и вприям бардак.
ДБА борятся за чистоту баз (в смисле за отсутсвое данних в базе)...
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Конечно с пустой то базой оно легче :)
Вообще то для DEV выделяют не базу а сервер
Потому что какая нибудь runaway query может ну не положить, но сильно ухудшить производительность сервера или пожрать все место на диске
Соответственно левелоперы споконо жиаут в своем маленьком DEV сервре и большой и страшный production DBA туда не лезет
Его интересуют скрипты которые создают девелоперы
Как правило между ними стоит QA department со своим отдельным сервером...
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014

Return to “Вопросы и новости IT”