Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 скрипт создаёт user-ов не в той БД  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1867
SQL Server 2000
В БД CreateStudDB имеется таблица с фамилиями студентов латынью.
Я хочу создать каждому свою БД и дать права db_owner.
Базы создаются, а права скрипт даёт не на личную БД, а на БД CreateStudDB.
Текст скрипта ниже. Заранее спасибо.

use CreateStudDb
go
declare @Student varchar(30),@Psw varchar(10),@Student_ID int
declare @dir varchar(512),@s varchar(4000), @s1 varchar(512)
set @dir='C:\\Program Files\\Microsoft SQL Server\\MSSQL$MSSQL_K\\Data\\'
declare ps cursor local forward_only for
select Student_ID,Student, Psw from Student
open ps

while 1=1 begin
	fetch next from ps into @Student_ID,@Student,@Psw
	if @@fetch_status<>0 break
	if @Psw is null  or ltrim(rtrim(@Psw))='' begin
		set @Psw =cast(floor(rand()*100000) as varchar(5))
		update Student set Psw=@Psw where Student_ID=@Student_ID
	end
	exec sp_addlogin @Student, @Psw
	set @s='CREATE DATABASE '+@Student+' ON 
	  ( NAME='+@Student+'_dat,FILENAME='''+@dir+@Student+'.mdf'''+') '+
	  ' LOG ON '+
	  '(NAME='+@Student+'_log,FILENAME='''+@dir+@Student+'.ldf'''+')'
	exec (@s)
	set @s1='use '+@Student
	exec (@s1)
	set @s1=' exec sp_adduser '''+@Student+''''
	exec (@s1)
	set @s1='exec sp_addrolemember ''db_owner'','''+@Student+'''' 
	exec (@s1)
	use CreateStudDb
end
close ps
deallocate ps
GO


ps: добавление go к "use" эффекта не даёт
20 мар 12, 15:10    [12281745]     Ответить | Цитировать Сообщить модератору
 Re: скрипт создаёт user-ов не в той БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
	set @s1='use '+@Student
	set @s1+=' exec sp_adduser '''+@Student+''''
	set @s1+=' exec sp_addrolemember ''db_owner'','''+@Student+'''' 
	exec (@s1)
20 мар 12, 15:11    [12281757]     Ответить | Цитировать Сообщить модератору
 Re: скрипт создаёт user-ов не в той БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Для 2000го "set @s1+= " заменить на "set @s1=@s1+"

Сообщение было отредактировано: 20 мар 12, 15:14
20 мар 12, 15:14    [12281780]     Ответить | Цитировать Сообщить модератору
 Re: скрипт создаёт user-ов не в той БД  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1867
Большое спасибо, помогло.
Хотя непонятно почему не работал предыд. текст
20 мар 12, 15:21    [12281860]     Ответить | Цитировать Сообщить модератору
 Re: скрипт создаёт user-ов не в той БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
muk07
Большое спасибо, помогло.
Хотя непонятно почему не работал предыд. текст
Все понятно. Контекст базы после exec восстанавливается в исходный.
20 мар 12, 15:30    [12281952]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить