none
Abfrage von SMO via PowerShell funktioniert nicht auf manchen Servern RRS feed

  • Frage

  • Hallo zusammen

     

    Folgende Abfrage funktioniert auf manchen Servern für alle Datenbanken, auf manchen nicht für die Datenbank Model und alle Anwendungsdatenbanken:

     

        $SQLServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $ServerName
        Foreach($Database in $SQLServer.Databases)
        {
            $HTML += "<TR>
                        <TD>$($Database.Name)</TD>
                        <TD>$($Database.RecoveryModel)</TD>
                        <TD>$($Database.LastBackupDate)</TD>
                        <TD>$($Database.LastDifferentialBackupDate)</TD>
                        <TD>$($Database.LastLogBackupDate)</TD>
                        <TD>$($Database.DataSpaceUsage)</TD>
                        <TD>$($Database.IndexSpaceUsage)</TD>
                        <TD>$($Database.SpaceAvailable)</TD>
                        <TD>$($Database.Size)</TD>
                    </TR>"

     

    "Funktioniert nicht" heisst: es kommen nur Nullen als Rückgabewert, das kann kaum sein, jedenfalls nicht auf soviel Servern tagelang.

     

    Wo braucht ich welche Berechtigung?

     

    Ciao

    Mittwoch, 15. Juli 2015 09:59

Alle Antworten

  • Hallo,

    das wird an den Berechtigungen liegen. Ein Login, der sonst keine weiteren Berechtigungen hat, darf sich an die Systemdatenbanken "master", "msdb" und "tempdb" anmelden. Er darf auch bestimmte Meta Daten, z.B. über sys.databases und erhält dort auch Basis Info's zu Datenbanken, zu denen er keine Berechtigungen hat, liegt an VIEW ANY DATABASE-Berechtigung

    Nur werden hier weitere Detaildaten ermittelt, wie LastBackupDate, und dafür braucht man die entsprechenden Berechtigungen. Ich kenne das Verhalten von SMO hier nicht so detailiert, aber scheint das statt einem Fehler hier Null Werte geliefert werden.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 15. Juli 2015 10:27