Folgende SP wird in der DB Test aufgerufen:
CREATE PROCEDURE [ALLE].[spGetPersonalListByInstID]
@lngInstID int
AS
DECLARE @P nvarchar(50)
BEGIN
SET NOCOUNT ON;
SELECT c.lngPersonalID, "P"=
Case
WHEN c.strTitel IS NULL THEN c.strNachname + ', '+ c.strVorname
ELSE c.strNachname + ', '+ c.strVorname + ' (' + c.strTitel + ')'
END,
c.strMail, c.strTelefon, c.strFax, d.Funktion, d.PersDaten, d.Aktiv
FROM (SELECT a.lngPersonalID, a.strTitel, a.strVorname, a.strNachname, a.strMail, a.strTelefon, a.strFax, b.lngInstID
FROM CRMDB.dbo.tblPersonal AS a INNER JOIN
CRMDB.dbo.tblZuordnung AS b ON a.lngPersonalID=b.lngPersonalID
WHERE b.lngInstID=210) AS c LEFT JOIN
(SELECT h.lngPersonalZuordID, h.lngPersonalID, h.lngInstID, i.strDescr AS Funktion, j.strDescr AS Aktiv, k.strDescr AS PersDaten
FROM tblPersonalZuord AS h LEFT JOIN
(SELECT lngOrd, strDescr FROM CRMDB.dbo.tblCode WHERE strKey1='STUDFUNKTION') AS i ON h.lngFunktion=i.lngOrd LEFT JOIN
(SELECT lngOrd, strDescr FROM CRMDB.dbo.tblCode WHERE strKey1='YESNO') AS j ON h.lngAktiv=j.lngOrd LEFT JOIN
(SELECT lngOrd, strDescr FROM CRMDB.dbo.tblCode WHERE strKey1='YESNO') AS k ON h.lngPersDaten=k.lngOrd) AS d
ON c.lngInstID=d.lngInstID AND c.lngPersonalID=d.lngPersonalID
END
Es wird auf drei Tabellen in der Datenbank CRMDB zugegriffen.
Führe ich die SP als sysadmin aus, funktioniert es einwandfrei.
Als User 'KKS\hahmann' erhalte ich folgende Fehlermeldung:
Meldung 916, Ebene 14, Status 1, Prozedur spGetPersonalListByInstID, Zeile 16
Der Serverprinzipal 'KKS\hahmann' kann unter dem aktuellen Sicherheitskontext nicht auf die CRMDB-Datenbank zugreifen.
Soweit ich das verstanden habe hat dies etwas mit Vertrauensstellung zu tun.
Der User 'KKS\hahmann' hat in der DB CRMBD Lesezugriff auf alle Tabellen (db_datareader).
Kann mir jemand erklären, wo mein Problem zu suchen ist?Vielen dank Maik