Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А как проще перенести логины? / 7 сообщений из 7, страница 1 из 1
01.11.2001, 11:55
    #32016398
Dimanch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
Кто подскажет, как проще всего перенести логины с одной машины на другую? Есть, конечно "ломовые" варианты, но наверное есть какой-нибудь изящный и нетрудоемкий способ. Заранее благодарен
...
Рейтинг: 0 / 0
01.11.2001, 12:03
    #32016400
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
Если речь идет о SQL2000, то для DTS есть соответствующий тип задания.
...
Рейтинг: 0 / 0
01.11.2001, 13:26
    #32016418
Dimanch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
Виноват! Речь идет о 7.0
...
Рейтинг: 0 / 0
01.11.2001, 14:37
    #32016423
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
Я использую процедурку:

CREATE proc dbo.generate_add_login
@login sysname = NULL
as
set nocount on
declare @add_login varchar(2000)
if @login is not null and not exists (select name from master..syslogins where name = @login)
begin
raiserror (15007,0,1,@login) -- no login found
set nocount off
return 1
end
if @login is null
begin
declare cur_logins cursor static
for select name from master..syslogins where password is not null and sid <> 0x01
open cur_logins

fetch next from cur_logins into @login
while @@fetch_status = 0
begin
select @add_login = 'exec sp_addlogin @loginame='''+ @login + ''', @sid=' + dbo.fn_hexadecimal(sid) + ', @passwd=' + dbo.fn_hexadecimal(convert(varbinary(256),password)) + ', @encryptopt=''skip_encryption''' from master..syslogins where name = @login
print @add_login
fetch next from cur_logins into @login
end
close cur_logins
deallocate cur_logins
end
else
begin
select @add_login = 'exec sp_addlogin @loginame='''+ @login + ''', @sid=' + dbo.fn_hexadecimal(sid) + ', @passwd=' + dbo.fn_hexadecimal(convert(varbinary(256),password)) + ', @encryptopt=''skip_encryption''' from master..syslogins where name = @login
print @add_login
end

set nocount off
return 0

GO



При запуске на сервере-источнике она генерит sp_addlogin statements, которые потом надо выполнить на сервере-приемнике.
В процедурке используется функция: dbo.fn_hexadecimal(varbinary(255)) для конвертации binary в вид 0x[0-9,A-F]+
Вот ее текст:

CREATE FUNCTION dbo.fn_hexadecimal (@binvalue varbinary(255))
RETURNS varchar(255)
AS
BEGIN
declare @charvalue varchar(255)
declare @i int
declare @length int
declare @hexstring char(16)

set @charvalue = '0x'
set @i = 1
set @length = datalength(@binvalue)
set @hexstring = '0123456789ABCDEF'

while (@i <= @length)
begin

declare @tempint int
declare @firstint int
declare @secondint int

set @tempint = convert(int, substring(@binvalue,@i,1))
set @firstint = floor(@tempint/16)
set @secondint = @tempint - (@firstint*16)

set @charvalue = @charvalue +
substring(@hexstring, @firstint+1, 1) +
substring(@hexstring, @secondint+1, 1)
set @i = @i + 1
end
RETURN @charvalue
END

Не составляет проблемы переписать ее как процедрку
...
Рейтинг: 0 / 0
02.11.2001, 06:24
    #32016443
Dimanch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
Есть вопрос по generate_add_login. А почему бы в курсоре кроме login, не вытащить еще и sid и password, а потом уже не обращаться к системной таблице. Или наоборот, обойтись без курсора и print и делать все в select? Или есть какая-то закавыка?
...
Рейтинг: 0 / 0
02.11.2001, 09:27
    #32016458
Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
А никто не подскажет хитрый финт ушами, дабы отследить в каких базах Login имеет Permitions и к каким группам он принадлежит?
...
Рейтинг: 0 / 0
02.11.2001, 18:24
    #32016507
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как проще перенести логины?
to Dimanch:
Не вижу противопоказаний. Просто я сначала использовал голый селект, ну а потом просто завернул его в курсор. Наверное надо было, но и так тоже работает
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А как проще перенести логины? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]