• It should work. I’ve just tested it with the script bellow. Do you have the problem when you run the select statement from a SSMS window or do you have it inside a procedure? Could it be that you have execute as statement somewhere in the code?

    --Creating a demo database and a demo login

    create database Demo

    go

    create login Demo1 with password = '1qaz@WSX3edc'

    go

    --Creating a schema and 2 tables on on the new schema and one in the dbo schema

    use Demo

    go

    create schema test

    go

    create table dbo.tbl (i int)

    go

    create table test.tbl2 (i int)

    go

    --Creating a user without specifying his default schema

    --which makes the dbo his default schema

    create user Demo1 from login Demo1

    go

    exec sp_addrolemember db_datareader, Demo1

    go

    --Executing a query as user Demo1. Since I didn't

    --specify the schema's name, the server will

    --use the default schema

    execute as user = 'Demo1'

    select * from tbl

    revert

    go

    --Modifying the user's default schema.

    alter user Demo1 with default_schema = test

    --This time the schema test will be used

    execute as user = 'Demo1'

    select * from tbl2

    revert

    go

    --cleanup

    use master

    go

    drop database Demo

    go

    drop login Demo1

    Adi

    --------------------------------------------------------------
    To know how to ask questions and increase the chances of getting asnwers:
    http://www.sqlservercentral.com/articles/Best+Practices/61537/

    For better answers on performance questions, click on the following...
    http://www.sqlservercentral.com/articles/SQLServerCentral/66909/