برگزیده های پرشین تولز

آموزش : تغییر owner همه جداول

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
سلام دوستان .
مواقع بسیاری پیش میاد که لازم هست owner یک جدول رو تغییر دهیم .
فرض کنید جدولی با نام tblUsers در دیتابیس با dbo owner ایجاد شده . شما می خواهید owner آن را از dbo به مثلا myowner تغییر دهید . برای این کار می توانیم از Stored Procedure ی که در دیتابیس master موجود است استفاده کنیم :
کد:
exec sp_changeobjectowner 'TableName','new owner'
مثال: exec sp_changeobjectowner 'tblUsers','myowner'

اما فرض کنید در دیتابیس نزدیک به 100 جدول وجود دارد که لازم است owner همگی تغییر کند . مطمئنا اجرای کد بالا برای هر جدول کار طاقت فرسایی هست .
لذا برای این کار می توانیم از کد زیر استفاده کنیم .

ابتدا یک متغیر از نوع sysname تعریف می کنیم . سپس یک cursor تعریف می کنیم تا بتوانیم سطر به سطر از جدول sysobjects بخوانیم . حال با بررسی کردن این شرط که owner جداول dbo باشند کد فوق را برای آن جدول اجرا می کنیم .و در نهایت cursor تعریف شده را deallocate می کنیم.

کد:
DECLARE @tbl sysname
DECLARE tblcur INSENSITIVE CURSOR FOR
SELECT name FROM sysobjects
WHERE xtype = 'U' AND uid = user_id('dbo')
OPEN tblcur
WHILE 1 = 1
BEGIN
FETCH tblcur INTO @tbl
IF @@fetch_status <0
BREAK

EXEC sp_changeobjectowner @tbl, 'myowner'
END
DEALLOCATE tblcur

بدین ترتیب owner همه جداول تغییر می کنند.
امیدوارم این مطلب مفید باشه و مورد استفاده شما قرار بگیره.
 
بالا