SQL Server service broker related rights issue CREATE PROCEDURE [dbo].[stproc_ssb_send]
  @iname varchar(20)
WITH EXECUTE AS 'xyz'
AS
BEGIN

DECLARE @DIALOG_HANDLE UNIQUEIDENTIFIER
DECLARE @MSG varchar(max) 

SET @MSG='&lt;MESSAGE&gt;
        &lt;test&gt;' + @iname + '&lt;/test&gt;
        &lt;/MESSAGE&gt;'

    BEGIN DIALOG CONVERSATION @DIALOG_HANDLE
    FROM SERVICE START_PROC_PROCESS_SERVICE
    TO SERVICE 'EXECUTE_PROC_PROCESS_SERVICE'
    ON CONTRACT [PROC_PROCESS_CONTRACT]
    WITH ENCRYPTION= OFF;

    SEND ON CONVERSATION @DIALOG_HANDLE
    MESSAGE TYPE PROC_PROCESS_MT(@MSG);

    END CONVERSATION @DIALOG_HANDLE
END


error:


  Msg 15517, Level 16, State 1, Procedure [stproc_ssb_send], Line 0
  Cannot execute as the database principal because the principal "xyz" does not exist, this type of principal cannot be impersonated, or you do not have permission.


XYZ is db_owner / db_ddladmin for this database.

Procedure is created using sa; error occurs while executing.
ALTER DATABASE  SET trustworthy ON

This query solved my prob. Thanks for efforts.