Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Смена владельца таблиц, SQL 
:(
    Опции темы
Люда
Дата 4.12.2003, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 24.4.2002

Репутация: нет
Всего: нет



Мне надо сменить одного владельца всех таблиц на другого, нашла в Интернете :
Код


-- Объявим переменные
  declare @ObjName varchar(255), @Str varchar(255),
              @OldOwnerName varchar(255), @NewOwnerName varchar(255)
-- Зададим имена старого и нового владельцев
  select @OldOwnerName='Старый владелец',
           @NewOwnerName='Новый владелец'
-- Объявим курсор для прохождения по всем объектам старого владельца
  declare Crs_DelObj   insensitive scroll cursor for
     select so.name
        from sysobjects so, sysusers su
        where so.uid = su.uid
           and su.name = @OldOwnerName
           and so.type in ('V', 'U', 'P')
-- пойдем по курсору и будем менять владельцев
  open Crs_DelObj
  fetch first from Crs_DelObj into @ObjName
  while @@fetch_status<>-1
  begin
     if @@fetch_status<>-2
     begin
        select @Str=ltrim(rtrim(@OldOwnerName))+"."+ltrim(rtrim(@ObjName))
     -- меняем владельца
        exec ("exec sp_changeobjectowner '"+@Str+"', '"+@NewOwnerName+"'")
     end
     fetch next from Crs_DelObj into @ObjName
  end
  go
  close Crs_DelObj
  go
  deallocate Crs_DelObj
  go
-- Объявим переменные
  declare @ObjName varchar(255), @Str varchar(255),
              @OldOwnerName varchar(255), @NewOwnerName varchar(255)
-- Зададим имена старого и нового владельцев
  select @OldOwnerName='Старый владелец',
           @NewOwnerName='Новый владелец'
-- Объявим курсор для прохождения по всем объектам старого владельца
  declare Crs_DelObj   insensitive scroll cursor for
     select so.name
        from sysobjects so, sysusers su
        where so.uid = su.uid
           and su.name = @OldOwnerName
           and so.type in ('V', 'U', 'P')
-- пойдем по курсору и будем менять владельцев
  open Crs_DelObj
  fetch first from Crs_DelObj into @ObjName
  while @@fetch_status<>-1
  begin
     if @@fetch_status<>-2
     begin
        select @Str=ltrim(rtrim(@OldOwnerName))+"."+ltrim(rtrim(@ObjName))
     -- меняем владельца
        exec ("exec sp_changeobjectowner '"+@Str+"', '"+@NewOwnerName+"'")
     end
     fetch next from Crs_DelObj into @ObjName
  end
  go
  close Crs_DelObj
  go
  deallocate Crs_DelObj
  go

Но когда пробую, получаю следующие ошибки:

Код

Server: Msg 170, Level 15, State 1, Line 23
Line 23: Incorrect syntax near 'exec sp_changeobjectowner ''.
Server: Msg 16916, Level 16, State 1, Line 1
A cursor with the name 'Crs_DelObj' does not exist.
Server: Msg 16916, Level 16, State 1, Line 1
A cursor with the name 'Crs_DelObj' does not exist.


Помогите!!!, я в этом дуб-дубом withstupid.gif , зарвнее спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.