2017-01-18 6 views
0

Nachdem ich umfangreiche Online-Recherchen durchgeführt habe, richte ich mich an euch, um dieses Problem zu lösen. Meine Datenbank verwendet den schemabasierten AnsatzEXECUTE AS verwendet standardmäßig keinen Schema-Namen

. Dbo.TableA schema1.TableA existiert in derselben Datenbank.

Ich verwende Identitätswechsel mit, um zwischen Schemas zu wechseln.

Der obige SP ist standardmäßig auf dbo gesetzt, d. H. Ergebnisse von dbo.TableA werden abgerufen. Im Gegensatz dazu, wenn ich als SQL-Block außerhalb von SP ausgeführt werde, funktioniert es wie ein Zauber. Ich bin mir nicht sicher, was ich hier vermisse.

P.S- Ich habe versucht, Grant impersonate (hat nicht funktioniert). Bitte beachten Sie, dass sich die Anmeldung für die Verbindung von der im SP verwendeten Anmeldung unterscheidet.

Vielen Dank im Voraus!

aktualisieren

Die oben SP funktioniert, wenn ich es zu einem dynamischen

SQL konvertieren

Antwort

2

SQL default schema resolution in Stored Procedure See.

Das Verhalten wird in https://technet.microsoft.com/en-us/library/ms191132(v=sql.105).aspx beschrieben: "In einer gespeicherten Prozedur werden Objektnamen, die mit Anweisungen (z. B. SELECT oder INSERT) verwendet werden, die nicht Schema-qualifiziert sind standardmäßig auf das Schema der gespeicherten Prozedur."

Siehe auch diesen Vorschlag (geschlossen als „Werde nicht reparieren“): https://connect.microsoft.com/SQLServer/feedback/details/272964/using-default-schema-in-stored-procedures

+0

Danke, das auf jeden Fall nützlich ist. – vikram

Verwandte Themen