• So there is something you are not telling us. Here is a script that you can play with, that shows how it works with DB_CHAINING. (Note that you don't need both of DB_CHAINING and TRUSTWORTHY.)

    CREATE LOGIN dbowner WITH PASSWORD = '()M*^23VJHKDAG'

    CREATE LOGIN plainuser WITH PASSWORD = '/%%"#$#DGS1'

    CREATE DATABASE db1

    CREATE DATABASE db2

    ALTER DATABASE db1 SET DB_CHAINING ON

    ALTER DATABASE db2 SET DB_CHAINING ON

    ALTER AUTHORIZATION ON DATABASE::db1 To dbowner

    ALTER AUTHORIZATION ON DATABASE::db2 To dbowner

    go

    USE db1

    go

    CREATE TABLE table_in_db1(a int NOT NULL)

    INSERT table_in_db1(a) VALUES (99522)

    CREATE USER plainuser

    go

    USE db2

    go

    CREATE USER plainuser

    go

    CREATE VIEW db2_view AS SELECT a FROM db1.dbo.table_in_db1

    go

    GRANT SELECT ON db2_view TO plainuser

    go

    EXECUTE AS LOGIN = 'plainuser'

    go

    SELECT a FROM db2_view

    go

    REVERT

    go

    USE tempdb

    go

    DROP DATABASE db1

    DROP DATABASE db2

    DROP LOGIN dbowner

    DROP LOGIN plainuser

    [font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]