R und Windows Firewall

Nach der Installation von R kann man den Zugriff erfolgreich testen, aber die User können trotzdem nicht damit arbeiten. Denn nicht alle sind gleich!

Wenn man R installiert hat, kann man mit diesem Code testen, ob die Komponente läuft:

EXEC Sp_execute_external_script
  @language =N'R',
  @script=N'print("Hello World from R")'; 

Als Rückgabe erhält man dann entsprechend diese Zeilen:

STDOUT message(s) from external script: 
[1] "Hello World from R"

Das funktioniert alles soweit recht einfach, da man ja die Installation als sysadmin ausgeführt hat. Wenn jetzt aber ein normaler User auf der Datenbank versucht seinen R- oder Python-Code auszuführen, erhält er leider diese Fehlermeldung, wenn auf diesem Server die Windows-Firewall aktiviert ist:

OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

Die Ursache ist darin zu suchen, dass die Windows-Firewall eine neue Regel erhalten hat, die den Zugriff für normale User blockiert. Falls man also den Zugriff erlauben möchte, muss man diese Regel erst einmal abschalten.

Der Name der Regel lautet "Block network access for R local user accounts in SQL Server instance <instancename>"
Hat man also mehrere Instanzen mit R installiert, dann gibt es auch mehrere Regeln, so dass man gezielt die Verwendung freischalten kann.