2010-11-03 5 views
23

У меня есть сервер SQL Server, на котором имеется около 50 баз данных. Я хочу создать новый Логин для клиента, который хочет иметь доступ к своей базе данных. Но я не хочу предоставлять им доступ к другим ~ 49 базам данных.Ограничение доступа к SQL Server Доступ к одной базе данных

Как я могу это сделать?

ответ

20
  1. Подключения к экземпляру сервера SQL с помощью студии управления
  2. Goto Безопасность -> Логинов -> (правая кнопка мыши) New Войти
  3. заполнить в деталях пользователя
  4. при отображении пользователя, выберите базы данные, которые вы хотите пользователь сможет получить доступ и настроить

UPDATE: вы также хотите Гото безопасности -> Роли сервера, и «общественность» проверьте разрешения на TSQL По умолчанию TCP/TSQL По умолчанию VIA/TSQL Local Machine/TSQL Named Pipes и удалить разрешение «подключить»

+1

Thanls для вашего ответа. Я создал нового пользователя таким образом, попытался войти в систему с ними в SSMS2008, и у меня есть полный доступ ко всем базам данных ... – Curt

+1

Привет, Curt. Это будет связано с настройками доступа по умолчанию через публичный или гостевой как на уровне сервера, так и на уровне базы данных. Пожалуйста, попробуйте выше, и если это не сработает, есть пара других вещей, которые я могу предложить (но в последний раз у меня была эта проблема, которая исправила его) – Irfy

+0

Спасибо @lrfy: D – Curt

1

Для тех, кто еще там интересно, как сделать это, у меня есть следующее решение для SQL Server 2008 R2 и более поздних версий:

USE master 
go 
DENY VIEW ANY DATABASE TO [user] 
go 

Это будет решать именно требование указано выше ..

+0

Эта команда заблокирует доступ ко всем 50 базам данных, пожалуйста, укажите другие требуемые заявления ... – BiLaL

36

Я думаю, это то, что мы хотели бы сделать очень много.

--Step 1: (create a new user) 
create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF; 


-- Step 2:(deny view to any database) 
USE master; 
GO 
DENY VIEW ANY DATABASE TO hello; 


-- step 3 (then authorized the user for that specific database , you have to use the master by doing use master as below) 
USE master; 
GO 
ALTER AUTHORIZATION ON DATABASE::yourDB TO hello; 
GO 

, если вы уже создали пользователя и назначен на эту базу данных перед тем, делая
USE [yourDB] CREATE USER привет для входа Привет С DEFAULT_SCHEMA = [DBO] GO

затем любезно удалить его делать ниже и следуйте инструкциям

USE yourDB; 
    GO 
    DROP USER newlogin; 
    GO 

Для получения дополнительной информации, пожалуйста, следуйте по ссылкам:

Hiding databases for a login on Microsoft Sql Server 2008R2 and above

+0

Теперь, как бы вы сделали, если не можете DENY all базы данных? Опорный, из этого ограничивает доступ только к одной конкретной базе данных. –

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