Ich verwende die SCHEMA_NAME()
-Funktion in einem T-SQL-Skript.SCHEMA_NAME() gibt NULL zurück
Es gibt NULL
für mich, aber das Standardschema für meinen Kollegen.
Die Dokumentation für SCHEMA_NAME()
nur NULL
als möglichen Wert auflistet, wenn man auch ein Argument für die SCHEMA_NAME()
Funktion liefert. Hier
ist die Dokumentation für SCHEMA_NAME()
: https://docs.microsoft.com/en-us/sql/t-sql/functions/schema-name-transact-sql
Was sollte ich achten, wenn dieses Problem debuggen?
Der DBA hat überprüft, dass meine Berechtigungen für meinen Kollegen und mich identisch sind.
Ich rufe die Funktion ohne Argumente auf, so dass der dokumentierte Fall der Rückgabe NULL
, wenn schema_id
nicht gültig ist, nicht gilt - zumindest nicht explizit.
Der DBA bestätigt ich ein Standardschema haben und ich die folgenden Einstellungen wählen, um zu bestätigen ich ein Standardschema haben:
select * from sys.database_principles dp where dp.name = USER_NAME();
Das DBA mein Standardschema, um etwas anderes verändert, dann verändert es in Fall wieder dort ist etwas im Hintergrund.
Dies geschieht in SQL Studio und wenn ich in der Befehlszeile mit sqlcmd
ausführen.
Ich habe festgestellt, dass wenn ich CREATE PROCEDURE myproc
ausführen die Prozedur in meinem Standardschema erstellt wird, aber wenn ich execute myproc
ausführen muss ich execute myschema.myproc
tun. Das heißt: I muss das Schema angeben.
Ich habe überprüft, dass das Standardschema existiert, indem Sie den Schemanamen im Aufruf der Stored Proced fest codieren.
"Gibt NULL zurück, wenn schema_id keine gültige ID ist." Wie kann jemand von uns wissen, ob Sie der Funktion eine gültige ID geben? –
Tab - Ich denke Michael benutzt die Funktion ohne Parameter. Ich habe es gerade ausprobiert und bekomme 'dbo' als Ergebnis. Entschuldige Michael, ich habe nicht die erste Idee, was hier oben sein könnte! – Brett
"Wenn schema_id nicht definiert ist, gibt SCHEMA_NAME den Namen des Standardschemas des Aufrufers zurück." Haben Sie ein gültiges Standardschema für Ihre Anmeldung? –