2013-04-04 9 views
0

У меня есть сценарий, который генерирует базу данных для данного {databaseName}, а затем создает логин для данного {loginName} для этой базы данных.SQL Server «Запретить просмотр любой базы данных» в хранимой процедуре

Я хочу, чтобы этот пользователь ограничивался, чтобы просмотреть эту базу данных, и никаких других.

я эту работу за счет использования:

USE [{DatabaseName}] 
GO 
ALTER AUTHORIZATION ON DATABASE::[{DatabaseName}] to [{LoginName}] 
GO 
USE [master] 
GO 
DENY VIEW ANY DATABASE TO [{LoginName}] 
GO 

Я ставлю это в хранимую процедуру, но я не могу изменить к [мастер] базы данных, чтобы выполнить последнюю строку:

DENY VIEW ANY DATABASE TO [{LoginName}] 

Есть ли способ запретить пользователю просматривать другую базу данных из хранимой процедуры?

Хранимая процедура в настоящее время находится в другой базе данных, но я могу ее переместить.

ответ

0

Вы можете изменить контекст базы данных для данной команды SQL, делая что-то вроде этого:

master.dbo.sp_executesql N'print db_name()' 

Хотя я подозреваю, что может быть лучше, чтобы сделать то, что вы пытаетесь сделать

Смежные вопросы