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-Key: 232000

Url: https://administrator.de/contentid/232000

Printed on: April 19, 2024 at 21:04 o'clock

Member: colinardo
colinardo Mar 08, 2014, updated at Mar 09, 2014 at 11:50:40 (UTC)
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
Member: DanielBodensee
DanielBodensee Mar 08, 2014 at 12:08:31 (UTC)
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
Member: colinardo
colinardo Mar 08, 2014 at 13:16:44 (UTC)
Goto Top
$env:USERNAME
Grüße Uwe