Узнайте схему SQL Server по умолчанию для сеанса

У меня есть требование знать, что представляет собой текущая схема по умолчанию в SQL-скрипте, который выполняет DDL. Мне не нужно устанавливать схему, но мне нужно получить ссылку на нее (имя или идентификатор) в переменную. Скрипт может работать как вход в Windows, поэтому недостаточно:

SELECT name, default_schema_name FROM sys.database_principals WHERE type = 'S' and name = SYSTEM_USER --SYSTEM User won't be named as a principal 

Я думал о том, чтобы сделать это, создав случайный объект в текущей схеме, а затем посмотрев его детали в information_schema, но есть ли у кого-нибудь более аккуратный способ?

Я работаю в SQL Server 2005.

Как насчет этого.

SELECT SCHEMA_NAME()

http://msdn.microsoft.com/en-us/library/ms175068.aspx

SCHEMA_NAME вернет имя схемы по умолчанию вызывающего

Альтернативно SCHEMA_ID()

Как насчет использования DATABASE_PRINCIPAL_ID для получения принципала db текущего пользователя?

 SELECT name, default_schema_name FROM sys.database_principals WHERE type = 'S' and name = USER_NAME(DATABASE_PRINCIPAL_ID()) 

Вот что вы можете сделать, чтобы увидеть больше информации о вашей текущей схеме:

 select sc.name as schemaname, sp.[name] as owner, sp.default_database_name as [database] from sys.schemas sc inner join sys.server_principals sp on sc.principal_id = sp.principal_id select sc.name as schemaname, sp.[name] as owner, sp.default_database_name as [database],sp.* from sys.schemas sc inner join sys.server_principals sp on sc.principal_id = sp.principal_id SELECT name, default_schema_name FROM sys.database_principals WHERE type = 'S' 

Надеюсь, это поможет.