I have a requirement to know what the current default schema is in a SQL script that is doing some DDL. I don't need to set the schema, but I do need to get a reference to it (name or ID) into a variable. The script may be running as a windows login, so the following isn't sufficient:
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
I've thought of doing it by creating a randomly named object in the current schema, and then looking at its details in the information_schema, but does anyone have a tidier way?
I'm working in SQL Server 2005.
Set the Default Schema for a Windows Group First you need to map the login to the database by checking the Map column, then click on the Default Schema column to select the schema.
In that case, just use SQL Server Management Studio > Database > Security > Users > Properties and change the default schema there.
Point to your Database Name and select new query in SQLMS. Use DBNAME; Select * from [Tablename] is correct.
How about this.
SELECT SCHEMA_NAME()
http://msdn.microsoft.com/en-us/library/ms175068.aspx
SCHEMA_NAME will return the name of the default schema of the caller
Alternatively SCHEMA_ID()
How about using DATABASE_PRINCIPAL_ID
to get the db principal of the current user?
SELECT name, default_schema_name FROM sys.database_principals WHERE type = 'S' and name = USER_NAME(DATABASE_PRINCIPAL_ID())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With