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]