Die vorangegangenen Antworten sind zum Teil richtig, Sie können Folgendes verwenden GRANT-Anweisung um nur die Berechtigung für eine Ansicht zu erteilen, ohne die Berechtigung für ihre Basistabelle zu erteilen.
Da es sich jedoch um eine datenbankübergreifende Lösung handelt, müssen Sie auch die datenbankübergreifende Eigentumskette auf Instanzebene aktivieren.
Sie müssen auch sicherstellen, dass die Ansicht und die Basistabelle demselben Eigentümer gehören, sonst funktioniert die Eigentümerkette nicht. In modernen Versionen von SQL Server (vielleicht nach SQL Server 2003) sind alle Tabellen und Ansichten standardmäßig Eigentum des jeweiligen Schemas, was bedeutet, dass der Eigentümer des Schemas auch derselbe sein sollte. Standardmäßig ist das Schema jeder Benutzertabelle "dbo", was "Datenbankeigentümer" bedeutet, so dass der Datenbankeigentümer der beiden zugehörigen DBs derselbe sein sollte.
Sie können diese beiden Artikel lesen, um mehr über SQL Server Ownership Chaining und Cross Database Owernship Chaining zu erfahren. https://www.mssqltips.com/sqlservertip/6394/understanding-sql-server-ownership-chaining/ https://www.mssqltips.com/sqlservertip/1782/understanding-cross-database-ownership-chaining-in-sql-server/
Und vielleicht wollen Sie auch mehr über SQL Server Logins und Datenbankbenutzer wissen, denn für den Benutzer, dem Sie nur in DB A Zugriff auf die Ansicht gewähren wollen, müssen Sie ihm zumindest die Rolle "public" in der DB geben, in der sich Ihre Basistabelle befindet: https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver15