Laden...

TSQL Messages

Erstellt von Hotte vor 13 Jahren Letzter Beitrag vor 13 Jahren 763 Views
H
Hotte Themenstarter:in
31 Beiträge seit 2010
vor 13 Jahren
TSQL Messages

verwendetes Datenbanksystem: SQL Server 2008 R2 mit dem EF 4

Hallo zusammen,

ich würde gerne von meiner App ein Backup ausführen können. Um den Erfolg anzuzeigen soll die Meldung, die man im SSMS bekommt im Client angezeigt werden. (Siehe unten)

Aber wie komme ich da ran? Irgendwo muss das doch gehen. ?(

Ich hoffe, das ich einfach nur noch nicht den richtigen Suchbegriff gefunden habe und es was Einfaches gibt. =)

Schönen Gruß,

Hotte

10 Prozent verarbeitet.
20 Prozent verarbeitet.
30 Prozent verarbeitet.
40 Prozent verarbeitet.
50 Prozent verarbeitet.
60 Prozent verarbeitet.
70 Prozent verarbeitet.
80 Prozent verarbeitet.
90 Prozent verarbeitet.
312 Seiten wurden für die XYZ-Datenbank, Datei 'XYZ' für Datei 1, verarbeitet.
100 Prozent verarbeitet.
6 Seiten wurden für die XYZ-Datenbank, Datei 'XYZ_log' für Datei 1, verarbeitet.
BACKUP DATABASE hat erfolgreich 318 Seiten in 1.834 Sekunden verarbeitet (1.352 MB/s).

Viele Grüße

Hotte

3.511 Beiträge seit 2005
vor 13 Jahren

Die Klasse SqlConnection bietet das Event InfoMessage an. Das ist genau das was du suchst.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

H
Hotte Themenstarter:in
31 Beiträge seit 2010
vor 13 Jahren

Hi Khalid,

das funktioniert schon mal prima! Danke 👍

Das EF scheint sowas irgendwie nicht vorzusehen.
Da es sich dabei um das Backup handelt und nichts für den normalen Benutzer,
kann ich auch erstmal verschmerzen das es eine Extrawurst mit einer SqlConnection gibt. 😉

Schönen Gruß,

Hotte

Viele Grüße

Hotte

1.378 Beiträge seit 2006
vor 13 Jahren

Über die Connection Eigenschaft eines ObjectContext kommst du an die DbConnection, die bei einer SQL Serververbindung hoffentlich eine SqlConnection sein wird.

Lg XXX

H
Hotte Themenstarter:in
31 Beiträge seit 2010
vor 13 Jahren

Über die
>
Eigenschaft eines ObjectContext kommst du an die DbConnection, die bei einer SQL Serververbindung hoffentlich eine SqlConnection sein wird.

Hi XXX,

leider ist es nicht ganz so einfach. 😉
Bei der Connection-Eigenschaft handelt es sich nur um eine allgemeine DbConnection.
Darüber könnte ich mir nur den ConnectionString holen.
Von der DbConnection werden dann die EntityConnection und SqlConnection, aber auch die ganzen anderen spezifischen Connections abgeleitet.

Die InfoMessage ist aber eine spezielle SqlServer Geschichte. 😕

Viele Grüße

Hotte

1.378 Beiträge seit 2006
vor 13 Jahren

Ja das war mir schon klar drum hab ich auch

die bei einer SQL Serververbindung hoffentlich eine SqlConnection sein wird dazugeschrieben.

Probier mal ob du nach SqlConnection casten kannst.



SqlConnection connection = myContext.Connection as SqlConnection;

if(connection != null)
{
   //do your fancy stuff in here. :)
}
else
{
   //einen versuch wars wert. :(
}

Lg XXX

M
49 Beiträge seit 2005
vor 13 Jahren

Hi,
ich arbeite immer mit dem

System.Data.IDbConnection

Interface.
Mit dem kann ich alles allgemeine machen und bei Bedarf kann ich es in die konkrete Klasse casten.

<edit>
Hier die Methode, die eine korrekte Connection aufbaut und das Interface zurück gibt:

private IDbConnection GetProviderConnection()
        {
            IDbConnection retVal = null;
            switch (_Provider)
            {
                case Provider.SQLSERVER:
                    retVal = new System.Data.SqlClient.SqlConnection(_ConnectionString);
                    break;
                case Provider.OLEDB:
                    retVal = new System.Data.OleDb.OleDbConnection(_ConnectionString);
                    break;
                case Provider.ODBC:
                    retVal = new System.Data.Odbc.OdbcConnection(_ConnectionString);
                    break;
                default:
                    break;
            }
            return retVal;

        }

</edit>

Grüße,
maYer

H
Hotte Themenstarter:in
31 Beiträge seit 2010
vor 13 Jahren

Das wäre evtl. mal einen Versuch wert.
Leider muss ich das Zeitlich erstmal hinten anstellen, da es schon mit dem nächsten Thema weitergeht.

Trotzdem danke! 😃

Viele Grüße

Hotte