Подтвердить что ты не робот

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

У меня есть требование узнать, какая текущая схема по умолчанию находится в SQL script, которая выполняет некоторые DDL. Мне не нужно устанавливать схему, но мне нужно получить ссылку на нее (имя или идентификатор) в переменную. script может работать как вход в 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.

4b9b3361

Ответ 2

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

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

Ответ 3

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

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'

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