Ich habe eine Frage zu benutzerdefinierten Tabellentypen in SQL Server 2008.
Für die Notwendigkeit einer der ASP.NET-Anwendungen haben wir unsere eigenen Tabellentypen in SQL Server 2008 definiert, um sie als Parameter in den gespeicherten Prozeduren zu verwenden (bei der Ausführung des Befehls sql in der ASP.NET-Anwendung übergeben wir das DataTable-Objekt als Parameter für die gespeicherte Prozedur siehe hier für ein Beispiel )
Das Problem ist, dass beim Ausführen des SQL-Befehls (Ausführen einer gespeicherten Prozedur) von ASP.NET eine Fehlermeldung angezeigt wird:
Die EXECUTE-Berechtigung wurde für das Objekt 'ourTableType', die Datenbank 'ourDatabase' und das Schema 'ourSchema' verweigert.
Warum ist das so? Warum müssen wir Berechtigungen für benutzerdefinierte Tabellentypen festlegen? Warum reicht es nicht aus, die Berechtigung nur für die gespeicherte Prozedur festzulegen, die sie verwendet? Und wenn wir es ganz gleich zu setzen, was, warum gibt es keine EXECUTE
Erlaubnis Typ Satz in Eigenschaftenfenster auch immer (ich sehe nur Control
, References
, Take Ownership
, View Definition
)?
Was ich auch nicht verstehe, ist, dass das Setzen der Berechtigung auf Control
im Eigenschaftenfenster das Problem löst und die gespeicherte Prozedur ohne Probleme ausgeführt wird.
AS dbo
am Ende. So : GRANT EXEC ON TYPE::[schema].[typename] TO [User] AS dbo
. Hat für mich gearbeitet.