Linq to sql-gespeicherte Prozedur Rückgabewert

Habe ich die folgende gespeicherte Prozedur in SQL Server 2005-Datenbank (gedacht einfach nur zurück die Größe der Datenbank in MB).

ALTER PROCEDURE [dbo].[dbSize]
AS
BEGIN
SET NOCOUNT ON;

DECLARE @sizeMb int
DECLARE @DB_NAME varchar(100)

SELECT @DB_NAME = DB_NAME()

SELECT @sizeMb = (size*8)/1024 FROM sys.master_files
    WHERE DB_NAME(database_id) = @DB_NAME
    AND Name = @DB_NAME

RETURN @sizeMb  
END

Wenn ich dies in SQL Server Management Studio, es funktioniert richtig, Rücksendung der aktuelle DB-Größe in MB an.

Möchte ich, dass dies innerhalb einer Anwendung, also habe ich ihn Hinzugefügt, um eine linq to sql datacontext, das generiert den folgenden code:

    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.dbSize")]
    public int dbSize()
    {
        IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
        return ((int)(result.ReturnValue));
    }

Rufe ich es so auf:

int dbSize = db.dbSize();

Jedoch, es gibt nur null, nie etwas anderes. Keine Ausnahmen irgendwelcher Art geworfen werden.
Ich experimentierte mit der Auswahl eines Ergebnis-und Ausgabeparameter zu verwenden, aber das hat auch nicht geholfen (der output-parameter auf null gesetzt). Irgendwelche Vorschläge?

Ich kann nicht beantworten Ihre Frage direkt, aber als ein allgemeiner Vorschlag, den Sie vielleicht finden es einfacher zu bedienen SMO zu bekommen Datenbank-Eigenschaften ein .NET-Anwendung.

InformationsquelleAutor Mansfield | 2012-06-27

Schreibe einen Kommentar