Heute hatte ich ein seltsames Verhalten:
Fehler
Eine SQL-Abfrage, die ich im Management Studio korrekt ausführen konnte und die ein Ergebnis geliefert hatte, hat in meinem Programm (C# Script, über die ExecuteScalar
-Funktion) einfach immer NULL zurückgegeben:
SELECT total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
FROM sys.master_files
WHERE DB_NAME(database_id) = 'MyDatabase'
Es war wie verhext.
Ursache
Dann bin ich drauf gekommen:
Der Benutzer, mit dem ich die Abfrage ausgeführt habe, war in der C#-Anwendung ein anderer (via Connection String) als im Management Studio.
Lösung
Ich musste den Benutzer zur Rolle sysadmin hinzufügen, dann lieferte die Abfrage auch Werte.
Also:
ALTER SERVER ROLE [sysadmin] ADD MEMBER [MyUser]
Die ursprüngliche SQL-Avfrage habe ich aus dieser Stack-Overflow-Antwort.