Archive für 28.10.2007

SQL Server 2000 Performance steigern mit ‘SET NOCOUNT ON’

Beim SQL Server kann man die Leistung der Commands steigern:

Bei fast jeder gespeicherten Prozedur sollte am Anfang SET NOCOUNT ON gesetzt sein. Es zeichnet einen guten Programmierstil aus, am Ende SET NOCOUNT OFF zu setzen. [Durch SET NOCOUNT ON wird verhindert, dass SQL Server für jede Anweisung in einer gespeicherten Prozedur DONE_IN_PROC-Meldungen an den Client sendet. – Hrsg.]. Dieser Standard gilt auch für Trigger.

Quelle: http://www.microsoft.com/germany/msdn/library/servers/sqlserver/TSQLProgrammierstandards.mspx?mfr=true

VB.NET: Problem mit Konstanten in Strukturen

Problem with Constants in Structure 

 

Folgende Struktur ist gegeben: 

 

 

    Public Structure pagingStructure1 

        Public Const itemsPerPage As Integer = 100 

        Public totalItems As Integer 

        Public currentPage As Integer 

        Public totalPageCount As Integer 

    End Structure 

 

 

 

Im Hauptprogramm verursacht die ROT markierte Zeile einen Fehler:(Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated) 

 

 

Public Shared Function getPagingObject()As pagingStructure1 

 

        Dim oSqlCommand As New SqlCommand(sqlStr) 

        oSqlCommand.Connection = getConnection() 

 

        Dim ps As pagingStructure1 

        ps.totalItems = CInt(oSqlCommand.ExecuteScalar()) 

 

        ps.totalPageCount = ps.totalItems \ ps.itemsPerPage 

 

        oSqlCommand.Connection.Close() 

        oSqlCommand.Connection.Dispose() 

 

        Return ps 

    End Function 

 

 

Wenn man allerdings über den namespace auf die Kostante zugreift, geht es: 

 

      ps.totalPageCount = ps.totalItems \ mdt.pagingStructure1.itemsPerPage 

 

 

Da ich das aber stilistisch nicht so gut finde, habe ich in der Deklaration eine ReadOnly-Property eingebaut: 

 

    Public Structure pagingStructure1 

        ‘Public Const itemsPerPage As Integer = 100 

        Public totalItems As Integer 

        Public currentPage As Integer 

        Public totalPageCount As Integer 

 

        Friend ReadOnly Property itemsPerPage() As Integer 

            Get 

                Return 100 

            End Get 

        End Property 

    End Structure 

 

 

 

 

Damit funktioniert jetzt auch der direkte Zugriff (oben ROT markiert)  

 

Eine Erklärung dafür habe ich nicht, in einem MS-Forum habe ich gelesen das es ein VS 2005 Bug sein soll, kann das zum jetzigen Zeitpunkt weder bestätigen, noch dementieren.  Wäre gut wenn jemand hierzu eine Referenz oder eine Erklärung posten könnte. 

 

|