Von anderem PC auf DB zugreifen (Netzwerk)

keith91

Benutzer
Beiträge
10
hi,
mir fällt nichts mehr ein, was ich sonst noch versuchen könnte...
folgendes szenario:
ich habe einen rechner, auf diesem läuft eine virtuelle maschine (also quasi ein eigener rechner). auf dieser virtuellen maschine ist der sql server 2008 r2 installiert und von diesem pc aus werden daten auf dem sql server in einer datenbank gespeichert.

jetzt will ich aber von dem eigentlichen rechner hier auf diese datenbank zugreifen. was muss ich dafür tun?

ich habe auf beiden rechnern die ports 1433 freigeschalten.
zunächst habe ich die datenbank mit dem sql manager lite for sql server die db verwaltet, habe dann aber gelesen dass das microsoft sql management studio 2008 wohl mehr optionen bietet, also bin ich umgestiegen, aber weiter komme ich damit auch nicht...

was komisch ist, ich kann die rechner nur in eine richtung anpingen, also nur von rechner1 auf die virtuelle maschine(rechner2), andersrum geht nicht.

grüße
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.846
hi,
mir fällt nichts mehr ein, was ich sonst noch versuchen könnte...
folgendes szenario:
ich habe einen rechner, auf diesem läuft eine virtuelle maschine (also quasi ein eigener rechner). auf dieser virtuellen maschine ist der sql server 2008 r2 installiert und von diesem pc aus werden daten auf dem sql server in einer datenbank gespeichert.

jetzt will ich aber von dem eigentlichen rechner hier auf diese datenbank zugreifen. was muss ich dafür tun?

ich habe auf beiden rechnern die ports 1433 freigeschalten.

1433 und 1434 TCP und UDP. Soweit ich weiß, und zwar auf dem Server. Auf dem Client ist das völlig egal, es sei denn, du hast eine strunzdumme Tischbrandschutzmauer, die ausgehend filtert...
 

keith91

Benutzer
Beiträge
10
ja ich hatte es halt mal vorsorglich für beide rechner gemacht.
und ich hatte auch schon den 1433 tcp und udp port für den server
sowie
den 1434 tcp und udp port für den server-browser freigegeben... allerdings bringt das auch nichts...
 

keith91

Benutzer
Beiträge
10
ok, selbst wenn ich die firewalls ganz ausschalte, klappt es nicht.
ich weiß ja nichtmal ob ich sonst alles richtig mache...
auf manchen seiten habe ich gelesen, dass man eine ODBC-Datenquelle hinzufügen muss, stimmt das?

in excel (vba) kommt immer die meldung "sql server existiert nicht oder zugriff verweigert"
 

ukulele

Datenbank-Guru
Beiträge
4.702
Bei ausgeschalteter Firewall bzw. erlaubtem IPv4 Ping müssen beide Rechner sich gegenseitig pingen können sonst hast du ein ganz anderes Problem. Ansonsten hier mal die Firewall Regeln als .bat Datei:

Code:
@echo =========  Ports des SQL-Servers  ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung"
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker 
netsh firewall set portopening TCP 4022 "SQL-Service Broker"
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC"
@echo =========  Ports für Analysedienste  ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste"
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser"
@echo =========  Verschiedene Anwendungen  ==============
@echo Aktivieren von Port 80 für HTTP
netsh firewall set portopening TCP 80 "HTTP"
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL"
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser"
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE
Man sollte aber zum testen erstmal ohne Firewall arbeiten und im Anschluss nur die Sachen öffnen die auch genutzt werden.

Manchmal muss Port 1433 auch erst fest im SQL Server eingetragen werden:
Start \ Programme \ Microsoft SQL Server 2008 R2 \ Konfigurationstools \ SQL Server-Konfigurations-Manager
SQL Server-Netzwerkkonfiguration \ Protokolle für 'SQLEXPRESS' \ TCP/IP aktivieren
IPAll TCP-Port 1433
Microsoft SQL Express 2008 R2 fixed Port 1433
 

keith91

Benutzer
Beiträge
10
alles anpingen klappt zumindest wenn die firewalls auf beiden rechnern ausgeschaltet sind.
wenn ich versuche eine odbc verbindung einzurichten (Datei-DNS) kommt wenn ich die sql-authentifizierung eingebe (User-ID und Passwort) die Meldung:
Fehler bei der Verbindung:
SQLState:'42000'
SQL Server-Fehler: 18488
Fehler bei der Anmeldung für den Benutzer 'XXX'. Ursache: Das Kennwort des Kontos muss geändert werden.
 

ukulele

Datenbank-Guru
Beiträge
4.702
Läßt dein SQL Server beide Authentifiezierungsmodi zu oder nur Windows-Auth? Wie meldest du dich auf dem Server lokal an?
 

keith91

Benutzer
Beiträge
10
ok, ich glaube ich bin gerade ein stück weiter gekommen :D
ich habe mich jetzt bei meinem sql server via sql-authentifizierung angemeldet (dort musste ich dann ein neues passwort eingeben weil das alte abgelaufen war).
danach hat auch die odbc verbindung auf dem anderen rechner auf den sql server funktioniert und ich habe jetzt bei "datei-dsn" eine neue dateidatenquelle drin.

aber wie kann ich jetzt die sql datenbank auslesen lassen? funktioniert das nicht mit dem gleichen befehl wie auf dem rechner, auf dem sich der server befindet?
gruß
 

ukulele

Datenbank-Guru
Beiträge
4.702
Also ein Programm wäre nun in der Lage über deine ODBC Verbindung Daten abzurufen. Mit Excel sollte das nachvollziehbar sein. Ich weis nicht genau von was für einem "Befehl" du sprichst. Wenn du TSQL Code meinst, der muss auch von einem Program ausgeführt werden, z.B. SQL Server Management Studio. Das läuft allerdings nicht über ODBC sondern kommuniziert direkt mit der SQL DB.
 

keith91

Benutzer
Beiträge
10
hm ja ich meinte über excel vba
auf dem rechner auf dem sich der server befindet funktioniert dass bei mir so:

Public Sub auslesen()
On Error GoTo Fehler
Dim adoRS As Object
Dim adoConn As Object
Dim strConn As String
Dim sQuery As String

Set adoRS = CreateObject("ADODB.recordset")
Set adoConn = CreateObject("ADODB.Connection")

strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=TEST_PC\SQLEXPRESS;" & _
"INITIAL CATALOG=test_db;INTEGRATED SECURITY=sspi;"

adoConn.Open strConn

sQuery = "SELECT * FROM emi_messung_std WHERE MONTH(DatumZeit)=10"
adoRS.Open sQuery, adoConn
Tabelle1.Range("A1").CopyFromRecordset adoRS
'adoRS.Close

adoConn.Close
Set adoRS = Nothing
Set adoConn = Nothing

GoTo n10 'Springt zum Ende der Funktion

Fehler:
MsgBox Err.Number & " " & Err.Description

n10:

End Sub
 

ukulele

Datenbank-Guru
Beiträge
4.702
Damit kann ich leider nicht helfen aber es empfiehlt sich das SQL Query zunächst mal im SQL Studio zu testen oder nur ein SELECT * FROM tabelle auszuführen. Das sollte auf jedenfall gehen.
 
Werbung:
Oben