Отделение пользователей от схем
Поведение схем в SQL Server 2005 отличается от поведения в других версиях. Схемы теперь не эквивалентны пользователям базы данных; сейчас каждая схема — отдельное пространство имен, существующее независимо от пользователя базы данных, создавшего ее. Другими словами, схема — это просто контейнер объектов. Схема может принадлежать любому пользователю, и владение может передаваться.
Новые возможности
Разделение владения схемами имеет большое значение.
Владение схемами и защищаемыми объектами в области схемы можно передать. Дополнительные сведения см. в разделе ALTER AUTHORIZATION (Transact-SQL).
Объекты можно перемещать между схемами. Дополнительные сведения см. в разделе ALTER SCHEMA (Transact-SQL).
Одна схема может содержать объекты, принадлежащие нескольким пользователям базы данных.
Несколько баз данных могут делить одну схему по умолчанию.
Разрешениями на схемы и содержащимися в них защищаемыми объектами можно управлять с большей точностью, чем в более ранних выпусках. Дополнительные сведения см. в разделах GRANT, предоставления разрешения на схему (Transact-SQL) и GRANT, предоставление разрешений на объект (Transact-SQL).
Схема может принадлежать любому участнику. Это могут быть роли и роли приложений.
Пользователь базы данных может быть удален без удаления объектов в соответствующей схеме.
Программный код, написанный для ранних выпусков SQL Server, может возвращать неверные результаты, если он предполагает, что схемы эквивалентны пользователям базы данных.
Представления каталога, разработанные для ранних выпусков SQL Server, могут возвращать неверные результаты. К таким представлениям относится sysobjects.
Новые представления каталогов
Начиная с версии SQL Server 2005, схемы — это явные сущности, отраженные в метаданных, поэтому они могут иметь только одного владельца, но один пользователь может иметь несколько схем. Эти сложные отношения не отражаются в системных таблицах SQL Server 2000, поэтому SQL Server 2005 предоставляет новые представления каталога, которые точно отражают новые метаданные.
В следующей таблице перечислены системные таблицы SQL Server 2000 и более поздних версий и соответствующие им представления каталога SQL Server 2005.
Системная таблица SQL Server 2000 |
Представление каталога SQL Server 2005 и более поздних версий |
---|---|
sysusers |
sys.database_principals sys.schemas |
syslogins |
sys.server_principals |
В SQL Server 2005 представлено более 250 новых представлений каталога. Для доступа к метаданным настоятельно рекомендуется использовать новые представления каталога. Дополнительные сведения см. в разделе Представления каталога (Transact-SQL).
Новые инструкции DDL могут внести сложности в работу с системными метаданными, которые точно не отражены в старых представлениях каталога, например sysobjects. В данном примере представление sysobjects возвращает несинхронизированный идентификатор пользователя и имя схемы, которые не отражают различие между пользователем и схемой в SQL Server 2005.
use tempdb
go
create login u1 with password = 'Mdfjd$sakj943857l7sdfh##30'
create user u1 with default_schema = u1
go
grant create table to u1
go
create schema sch1
go
create schema u1 authorization u1
go
execute as user = 'u1'
go
create table t1(c1 int)
go
revert
go
select user_name(uid) , * from sysobjects where name = 't1'
go
Внимание! |
---|
Необходимо использовать новые представления каталога в базе данных, где была выполнена любая из следующих инструкций DDL: CREATE/ALTER/DROP SCHEMA; CREATE/ALTER/DROP USER; CREATE/ALTER/DROP ROLE; CREATE/ALTER/DROP APPROLE; ALTER AUTHORIZATION. |
Схемы по умолчанию
Чтобы разрешить неполные имена защищаемых объектов, SQL Server 2000 использует разрешение имен для проверки схем, принадлежащих вызывающему пользователю и dbo.
Начиная с версии SQL Server 2005 у каждого пользователя есть схема по умолчанию. Схему по умолчанию можно задать с помощью параметра DEFAULT_SCHEMA инструкций CREATE USER и ALTER USER. Если параметр DEFAULT_SCHEMA не определен, схемой по умолчанию назначается схема dbo.
См. также