2017-08-17 5 views
2

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.

+0

"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? –

+0

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

+2

"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? –

Antwort

0

In Sicherheit> Logins klicken Sie mit der rechten Maustaste auf Ihren Benutzernamen, klicken Sie auf "Benutzerzuordnungen" und sehen Sie, wie das Standardschema für die Datenbank ist. Führen Sie dann dasselbe für die Anmeldung Ihres Mitarbeiters durch.