danielbodensee
Goto Top

PS, SQL Abfrage

Hallo zusammen,

sorry, muss heute nochmal was fragen...

Ich möchte von einer lokalen SQL-Instanz abfragen ob der Account mit dem ich Arbeite auch in der Rolle "cbcreator" ist. Das geht per "SELECT IS_SRVROLEMEMBER('dbcreator')", aber mein Problem ist, wie setze ich möglichst "stabil" den Select ab um sicher zugehen das die Instanz/SQL Server vorhanden ist, wie reagiere ich auf Fehler (wenn kein SQL Server inistalliert ist) oder prüfe ob der Zugriff schon nicht funktioniert hat?

Theoretisch geben ich der Funktion den Instanz und die gewünschte Rolle mit, aus der Funktion gebe ich True zurück wenn es geklappt hat sonst eben False.

Da dies ein wichtiger Schritt bei der Installation einer Software ist, möchte ich sichergehen das die Rolle passt und vor allem ob ein Zugriff möglich war.

Viele Grüsse,
Daniel

Content-ID: 232000

Url: https://administrator.de/forum/ps-sql-abfrage-232000.html

Ausgedruckt am: 17.04.2025 um 09:04 Uhr

colinardo
colinardo 08.03.2014, aktualisiert am 09.03.2014 um 12:50:40 Uhr
Goto Top
Hallo Daniel,
du kannst es mal hiermit versuchen (getestet auf einem MSSQL Server 2008R2)
function checkSQLRoleMember([string]$server,[string]$role){
    $conn = new-object System.Data.SqlClient.SqlConnection
    $conn.ConnectionString = “Server=$server;Database=master;Integrated Security=True”
    $query = "SELECT IS_SRVROLEMEMBER('$role')"  
    try{
        $conn.Open()
        $cmd = $conn.CreateCommand()
        $cmd.CommandText = $query
        $cmd.Connection = $conn
        $result = $cmd.ExecuteScalar()
        $conn.close()
        if ($result -eq 1 ){
            $true
        }else{
            $false
        }
    }
    catch{
        echo "Fehler: $($_.Exception.Message)"  
	$conn.close()
	$false
    }
   
}

checkSQLRoleMember "localhost" "dbcreator"  
Grüße Uwe
DanielBodensee
DanielBodensee 08.03.2014 um 13:08:31 Uhr
Goto Top
Hallo Uwe,

eine Frage noch face-smile

Wie kann ich eigentlich auslesen mit welchem Account das Script gestartet wurde? Ich möchte das im Logfile eintragen da ich ab und an Probleme erwarte und daher bei der Analyse im Logfile sehen will wie das Script gestartet wurde.

Viele Grüsse,
Daniel
colinardo
colinardo 08.03.2014 um 14:16:44 Uhr
Goto Top
$env:USERNAME
Grüße Uwe