Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Von Linux Server auf MS Server mit mssql connecten Unable to connect

Frage Entwicklung Datenbanken

Mitglied: 69304

69304 (Level 1)

04.12.2009, aktualisiert 11:01 Uhr, 6843 Aufrufe, 9 Kommentare

Hallo!

Erstmal folgendes Szenario:

- Windows Server 2003 mit SQL Server 2000 installiert
- Linux Ubuntu Server 9.10 mit XAMPP 1.7.2 installiert


Auf dem MS-Server ist die Datenbank, auf die zugegriffen werden soll vorhanden.

Da ich aber auf dem Linux Server keinen ODBC-Connector wie unter Windows erstellen kann, will ich eine Abfrage über folgendes Skript machen:

01.
<?php 
02.
$myServer = "192.168.101.2"
03.
$myUser = "sa"
04.
$myPass = "*****"
05.
$myDB = "*****"
06.
$dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer"); 
07.
$selected = mssql_select_db($myDB, $dbhandle) or die("Couldn't open database $myDB"); 
08.
$query = "SELECT * FROM STOERUNGEN WHERE StoerungsNr LIKE '2009460086'"
09.
$result = mssql_query($query); 
10.
while($row = mssql_fetch_array($result)) 
11.
12.
  echo "<li>" . $row["StoerungsNr"] . $row["Firma"] . "</li>"
13.
14.
mssql_close($dbhandle); 
15.
?>

Als Antwort in Browser erhalte ich folgende Meldung:

01.
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 192.168.101.2 in /opt/lampp/htdocs/stoerungen/index.php on line 6 
02.
Couldn't connect to SQL Server on 192.168.101.2

Was kann man hier machen? Erreichen kann ich den Windows Server - Ping erfolgreich! Und von meinem Client mit XAMPP für Windows und einem System-ODBC-Connector funktioniert es tadellos....

Bin schon echt am verzweifeln! Mit der ADODB-Klasse bekomme ich an sich die selbe Fehlermeldung...
Mitglied: Dani
04.12.2009 um 11:00 Uhr
Moin,
wenn ich mich richtig erinnere, musst du wie bei MySQL erstmal die Einstellungen der MSSQL DB anpassen. Denn standardmäßig darf man nicht von extern (Standard: localhost) auf die DB zugreifen. Danach muss der User evtl. angepasst werden. Leider habe ich grad keine MSSQL zur Hand.


Grüße,
Dani
Bitte warten ..
Mitglied: 69304
04.12.2009 um 11:25 Uhr
Hallo Dani!

Danke erstmal für die schnelle Antwort!

Auf diese Idee bin ich auch schon gekommen, aber habe es ausgeschlossen, da der Zugriff von meiner Workstation (Win XP - selbes Skript) ja funktioniert.

Gut ok, ich weiß jetzt zwar nicht, in wie weit der System-Connector sich da einmischt, aber da funktioniert es!?!
Bitte warten ..
Mitglied: Gilneas
04.12.2009 um 11:40 Uhr
Hast du mal versucht den Instanznamen deines SQL-Servers mit anzugeben?
192.168.101.2\Instanzname
Bitte warten ..
Mitglied: 69304
04.12.2009 um 11:56 Uhr
Da ich leider den Instanzname nicht kenne (Wo bekomme ich den her?), habe ich den Standartnamen "192.168.101.2\MSSQLSERVER" verwendet.

Dies bringt aber auch keine Lösung. Selber Fehler.

Kann das vielleicht mit der Domäne zusammen hängen? Da meine Workstation in der Domäne hängt, und der Linux Server nicht?!?


EDIT:

Habe ihn jetzt per Samba in die Domäne integriert. Bringt aber leider auch nichts...
Bitte warten ..
Mitglied: 32067
04.12.2009 um 12:45 Uhr
Hallo,

- die PHP Anleitung meint man muss unter Linux die freetds-lib installiert haben, auf die greift php zurück ( http://www.php.net/manual/de/mssql.requirements.php ). Ist die drauf ? (ok, ich würde dann eigentlich auch eine andere Fehlermeldung erwarten).

- Die SQL-Authentisierung an ? Wenn nur Windows-Auth angeschaltet wird das nix mit sa als User.

- TCP als Protokoll im SQL-Server aktiviert ? Mit Named Pipes wird man nix von Linux aus meine ich.

- Geht ein "telnet <db-server> 1433" vom Linux-Rechner ? Das ist der Standard TCP/IP Port von MS SQL.

Mehr fällt mir jetzt erstmal nicht ein
Bitte warten ..
Mitglied: 69304
04.12.2009 um 13:01 Uhr
Hallo!

- Die FreeTDS habe ich nachinstalliert, XAMPP neu gestartet - selber Fehler. Muss man dies noch irgendwie in die php.ini integrieren?

- SQL-Auth steht auf "SQL und Windows" (Anmerkung: Von der Windows-Workstation geht das Skript)

- TCP als Protokoll? TCP/IP-Protokoll ist logischerweise aktiviert, oder meinst du was anderes damit?!?

- Telnet funktioniert.

-.-


EDIT:

Testweise Anmeldung im Skript als Domänen-Admin - auch leider erfolglos...
Bitte warten ..
Mitglied: Gilneas
04.12.2009 um 13:24 Uhr
Vielleicht hilft es weiter, wenn du mit der Funktion "mssql_get_last_message" die letzte Meldung des Server zurückgeben lässt. Evtl. hilft das bei der Fehlersuche weiter, wenn der Server einen Grund für den reject angibt.

Link: http://php.net/manual/de/function.mssql-get-last-message.php


Zum Thema Instanzname:
01.
SQL Server Instance Name : 
02.
 
03.
 
04.
In SQL Server Management Studio->RegisterServers->double click your server to open the Object Explorer -> right click to select the properties window ->General Tab - to see the ServerName (instance name) 
05.
 
06.
  
07.
 
08.
or Open a new query in SQL Server Management window  and execute the following 
09.
 
10.
-- to get the sql server instance name 
11.
 
12.
select @@ServerName  
Bitte warten ..
Mitglied: 69304
04.12.2009 um 13:35 Uhr
Als Name wird mir da "(local)" angezeigt - ist dies möglich?

---

Ich habe nun 2 Skripte gemacht. Eins, was per mssql_connect verbindet und das zweiter, dass per ADODB verbinden soll.


Das ADOBD-Skript:

01.
<?php 
02.
define("SQL_HOST", "192.168.101.2"); 
03.
define("SQL_USER", "sa"); 
04.
define("SQL_PASS", "+++"); 
05.
define("SQL_DB", "+++"); 
06.
 
07.
include('adodb5/adodb.inc.php'); 
08.
 
09.
$db =& ADONewConnection('odbc_mssql'); 
10.
$dsn = "Driver={SQL Server};Server=".SQL_HOST.";Database=".SQL_DB.";"
11.
$db->Connect($dsn,SQL_USER,SQL_PASS); 
12.
 
13.
$recordSet = &$db->Execute("SELECT StoerungsNr, Firma FROM STOERUNGEN WHERE StoerungsNr LIKE '2009460086'"); 
14.
 
15.
if(!$recordSet) { 
16.
	print $db->ErrorMsg(); 
17.
} else
18.
	while(!$recordSet->EOF) { 
19.
		print '<li>' . $recordSet->fields[0] . ' - ' . $recordSet->fields[1].'</li>'
20.
		$recordSet->MoveNext(); 
21.
22.
23.
 
24.
$recordSet->Close(); 
25.
$db->Close(); 
26.
?>
Rückmeldung:

01.
Notice: Use of undefined constant ODBC_BINMODE_RETURN - assumed 'ODBC_BINMODE_RETURN' in /opt/lampp/htdocs/stoerungen/adodb5/adodb.inc.php on line 4230 
02.
 
03.
Notice: Use of undefined constant SQL_CUR_USE_DRIVER - assumed 'SQL_CUR_USE_DRIVER' in /opt/lampp/htdocs/stoerungen/adodb5/adodb.inc.php on line 4230 
04.
 
05.
Strict Standards: Only variables should be assigned by reference in /opt/lampp/htdocs/stoerungen/index_adodb.php on line 9

Das mssql-Skript:

01.
<?php 
02.
define("SQL_HOST", "192.168.101.2"); 
03.
define("SQL_USER", "sa"); 
04.
define("SQL_PASS", "+++"); 
05.
define("SQL_DB", "+++"); 
06.
 
07.
$dbhandle = mssql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die('<p><b>Konnte keine Verbindung zu "'.SQL_HOST.'" herstellen!</b></p>'); 
08.
$selected = mssql_select_db(SQL_DB, $dbhandle) or die('<p><b>Konnte Datenbank "'.SQL_DB.'" nicht &ouml;ffnen!</b></p>'); 
09.
 
10.
$query = "SELECT * FROM STOERUNGEN WHERE StoerungsNr LIKE '2009460086'"
11.
$result = mssql_query($query); 
12.
 
13.
while($row = mssql_fetch_array($result)) 
14.
15.
  echo "<li>" . $row["StoerungsNr"] . " - " . $row["Firma"] . "</li>"
16.
17.
 
18.
mssql_close($dbhandle); 
19.
?>
Rückmeldung:

01.
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 192.168.101.2 in /opt/lampp/htdocs/stoerungen/index_mssql.php on line 7 
02.
 
03.
Konnte keine Verbindung zu "192.168.101.2" herstellen!

Interessant wäre zu erwähnen, dass beide Skripte von der Windows-Workstation mit XAMPP funktionieren!
Bitte warten ..
Mitglied: Gilneas
09.12.2009 um 08:55 Uhr
Was liefert denn nun mssql_get_last_message zurück?

01.
Strict Standards: Only variables should be assigned by reference in /opt/lampp/htdocs/stoerungen/index_adodb.php on line 9
Und hier scheint es, als dürftest du diesen Aufruf nicht als Referenz anlegen:
01.
$db =& ADONewConnection('odbc_mssql');

Trotz allem liegt das Problem wohl noch etwas früher, beim Verbindungsaufbau.
Und (Local) als Ergebnis für den Instanznamen finde ich etwas seltsam. Du solltest zumindest den Computernamen des Servers rausbekommen.

Was mir noch einfällt:
Welchen Authentifizierungstyp verwendest du? - Wenn du Windows Authentifizierung verwendest, dann würde das erklären, warum der Linux Client nicht drauf kommt...
Und du könntest mal in den Serverlogs nachsehen, ob da Einträge gemacht werden, evtl. steht ja was dabei.
Bitte warten ..
Ähnliche Inhalte
Netzwerkmanagement
Company Connect Telekom und Gateways (13)

Frage von friesenkind zum Thema Netzwerkmanagement ...

Exchange Server
Frage zu Office365 mit Azure AD Connect (2)

Frage von PizzaPepperoni zum Thema Exchange Server ...

Windows Server
gelöst AAD Connect Sync Service Error 25001 (2)

Frage von xtra-long zum Thema Windows Server ...

Windows Server
AAD Connect Einmalige Anmelden aktivieren geht nicht O365

Frage von PizzaPepperoni zum Thema Windows Server ...

Neue Wissensbeiträge
Viren und Trojaner

Link: Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Switche und Hubs
gelöst VLAN für Gäste WLAN einrichten über FritzBox und Switch (10)

Frage von Elo-14 zum Thema Switche und Hubs ...

Windows Server
Frage zu Server Rack (10)

Frage von rainergugus zum Thema Windows Server ...