PDA

View Full Version : انتقال user های بخش Login sql



hraeissi
پنج شنبه 12 آبان 1390, 10:47 صبح
با سلام

ما در شرکت یه برنامه داریم که با SQL کار می کند ،شرکت تولید کننده چند سالی است که تعطیل شده .
به تازگی ما می خواهیم سرور را جابجا کنیم که متوجه شدیم که برنامه به گونه ای است که کاربران برنامه کلمه کاربریشان در بخش login قسمت Security sql تعریف شده است .
مشکل الان این است که نمی دونم که کاربرا رمزشون چیه و تعدادشون زیاده
سئوالام اینه :

1- آیا راهی هست که کل این کاربرا به سرور جدید انتقال پیدا کند ؟

2- آیا برنامه ای است که رمز کاربرا رو نمایش بده ؟

ممنون

حمیدرضاصادقیان
شنبه 14 آبان 1390, 08:52 صبح
اگر از نسخه های 2005 به بعد استفاده میکنید میتوانید با استفاده از Generate Script اینکارو انجام بدید و خودش Login,Password رو براش یک Script تولید میکنه که میتونید روی سیستم مقصد اونو اجرا کنید.
این لینک (http://support.microsoft.com/kb/246133)اطلاعات مفیدی در اختیارتون قرار میده.
برای پیدا کردن Password این لینک (http://www.codeproject.com/KB/vbscript/SQLServerPasswords.aspx) و این لینک (http://www.oxid.it/ca_um/topics/sql_server_2000_password_extractor.htm) هم میتونه مفید باشه.

mahdihg
سه شنبه 17 آبان 1390, 14:25 عصر
به اين نوع کاربراني که در ديتابيس هستند ولي در Server Logins وجود ندارند يا حتي با يک نام وجود دارند در هر دو ولي به يکديگر متصل نيستند در اصطلاح کاربران يتيم يا Orphan Users گفته مي شود( رجوع شود به Books Online) ولي براي حل اين مشکل مي توان از طريق اسکريپت گيري و در نهايت اتصال کابران ديتابيس به Login ها پس از Attach يا Restore کردن ديتابيس اين مشکل را حل کرد.

esteghamat
دوشنبه 23 آبان 1390, 16:55 عصر
سلام
همونطور كه رفيقمون گفت ، اول براي همه لوگين ها يه اسكريپت مي سازي و بعد مي ري روي سرور جديد اجرا مي كني. پس حالا همه لاگين ها رو اينجا هم داري.
بعد ديتا بيس ها رو به سرور جديد منتقل مي كني.
در آخر براي اتصال user ديتابيس ها و لاگين ها اسكريپت زير رو اجرا مي كني.

Declare
@UserName varchar(100),
@GUID varchar(1001)

declare MyUserCR cursor for
select Name from sysUsers
where Name not in ('public' , 'Sys' , 'DBO' , 'Information_Schema','Guest')
OPEN MyUserCR
FETCH NEXT FROM MyUserCR Into @UserName
while @@Fetch_Status = 0
begin
set @GUID = NewId()
exec sp_change_users_login 'Auto_fix' ,@UserName,Null,@GUID
FETCH NEXT FROM MyUserCR Into @UserName
end
Close MyUserCR
deallocate MyUserCR