Я не уверен, возможно ли то, что я хочу, но поехали.
На работе у нас есть выделенный ящик SQL Server 2008, в котором размещаются различные базы данных, которые нам нужно запускать. У нас есть удаленный человек (назовем его Боб), которому нужно разместить на нем базу данных. Меня попросили ограничить доступ Боба к блоку SQL, но дать ему достаточно доступа для управления своей базой данных.
В настоящее время я установил для Боба учетную запись SQL и сделал его владельцем базы данных Боба и не получил доступа ни к чему другому. Когда я вхожу в SSMS с помощью SQL-входа Боба, я вижу все другие базы данных, но могу получить доступ только к Бобу. Однако я могу получить доступ и поиграть с основной базой данных, что мне не кажется теплым и нечетким.
Есть ли способ запретить Бобу видеть имена других баз данных и запретить ему доступ к главной базе данных?
В SQL 2005 и 2008 была введена возможность предоставлять / удалять права на просмотр баз данных и называется «ПРОСМОТР ЛЮБОЙ БАЗЫ ДАННЫХ».
http://msdn.microsoft.com/en-us/library/ms189077.aspx
Вы просто должны убедиться, что рассматриваемый логин, который вы хотите ограничить, не имеет прямых или косвенных прав (через членство в группе) на это право сервера.
Я не уверен в отключении возможности видеть базы данных, но в отношении мастера Боб, вероятно, либо (а) имеет явное разрешение на мастер (б) имеет роль сервера, либо (в) имеет доступ как «гость». Проверить a и b должно быть достаточно просто, просмотрев логин Боба на сервере. Проверьте c, выполнив команду «select user_name ()» в мастере, когда вы вошли в систему как Боб.