ODBC der Website auf Remoteserver?

11/28/2014 23:19 BigBrainAFK#1
Hallo,

ich wollte mal fragen wie ich die ODBC-Verbindung von PHP auf einen externen Server zeigen lasse. Habe auf dem MS SQL Server schon Remotezugriff per TCP/IP eingeschaltet da das denke ich mal von nöten sein wird.

Momentaner Versuch:

Da das aber nicht funktioniert und ich nicht einmal weiß ob das so korrekt ist frage ich lieber bevor ich etwas kaputt mache.

MfG,
BigBrainAFK
11/29/2014 00:14 Terrat#2
#removed
11/29/2014 13:27 xTwiLightx#3
Nehme lieber den "SQL Server Native Client (x.x)" Treiber.
x.x entspricht hier der Version deines SQL Servers (11.0 = 2012/2014)

Hier mal meine Konfig:
Code:
const SQL_HOST	 = '127.0.0.1';
const SQL_PORT	 = '1433';
const SQL_USER	 = 'sa';
const SQL_PASS	 = 'xxxxxx';
const SQL_DB	 = 'WEB_DB';
const SQL_DRIVER = 'SQL Server Native Client 11.0';
Und der der Konstruktor meiner Datenbankklasse:
Code:
	private function __construct() {
		try {
			$con_string = 'odbc:Driver='.Config::get('sql/driver').';Server='.Config::get('sql/host').';Port='.Config::get('sql/port').';Database='.Config::get('sql/db').'';
			$this->_pdo = new PDO( $con_string, Config::get('sql/user'), Config::get('sql/pass') );
		} catch (Exception $e) {
			$this->logError($e);
			die( __METHOD__ . " : " . $e->getMessage() );
		}
	}
Config::get() gibt hier im Endeffekt nur die Konstanten zurück, die Kontanten an sich würden auch funktionieren.

Ein conntection String sieht dann so aus:
Code:
odbc:Driver=SQL Server Native Client 11.0;Server=127.0.0.1;Port=1433;Database=WEB_DB
Bei dir sehe ich gerade zwei Dinge:
  1. SQL Server Express arbeitet nicht mit Port 1433, sondern mit einem dynamischen Port. Du musst also im SQL Server Configuration Manager in den TCP/IP Einstellungen einen festen Port einstellen.
  2. SQLEXPRESS ist keine Datenbank bei dir, denke ich mal? :D
11/29/2014 14:27 WinterWave#4
Open the 1433 port and authorize the connexion only for your website server. Activate the MSSQL remote connexion :

[Only registered and activated users can see links. Click Here To Register...]

Then use it to connect, and it will execute the query without error

Quote:
$_CONFIG['MsSQL_host']='5.5.5.5,1433';
$_CONFIG['MsSQL_user']='sa';
$_CONFIG['MsSQL_pass']='pass';

$mssql = odbc_pconnect('Driver={SQL Server};Server='.$_CONFIG['MsSQL_host'].';', $_CONFIG['MsSQL_user'],$_CONFIG['MsSQL_pass']);
11/29/2014 15:10 Sedrika#5
Und trusted connection auf false setze.
11/30/2014 16:05 BigBrainAFK#6
Beide Methoden haben leider nicht funktioniert. Er sagt es sei kein Default Driver gegeben.
11/30/2014 16:25 xTwiLightx#7
Gib mal die Fehlermeldung und (wenn vorhanden) Fehlercode mit an.
11/30/2014 19:07 BigBrainAFK#8
Fehler:

PHP Zeile:
12/01/2014 01:11 xTwiLightx#9
Quote:
Originally Posted by BigBrainAFK View Post
Fehler:

PHP Zeile:
Den 8.1 Treiber gibt es nicht, wenn ich richtig liege.

Laut [Only registered and activated users can see links. Click Here To Register...] geht es mit SQL Server Native Client (ohne Version) ab 2005 und dann mit 10, 10.5 und 11.0 weiter.

Schaue mal in dem Windows (wo der Webserver läuft) nach den verfügbaren Treibern für ODBC.
Diese findest du unter Verwaltung -> Datenquellen (ODBC).
Wenn du dann eine neue DSN erstellst, werden die verfügbaren Treiber angezeigt.

Das ganze sieht z.B. bei mir auf dem lokalen Server so aus:
[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...] hilft auch, um die verfügbaren Treiber zu listen.
12/01/2014 10:43 BigBrainAFK#10
Der Webserver läuft auf Linux so wie es sich eigentlich gehört.

Habe im Moment einen Root wo ich zeitweise wegen der DB Verbindung Apache und PHP installiert habe. Aber da funzt es auch ohne das 8.1 nicht.

Bild der Treiber des Windows Roots im Anhang.
12/01/2014 14:29 xTwiLightx#11
Schaue noch mal auf den Link von mir, da steht auch welche Treiber deine Linux Installation hat ->

Unter
Quote:
/etc/odbcinst.ini
sollten die verfügbaren Treiber sein.

Die Treiber des Servers wo SQL Server läuft sind egal, da nur der Client diese benötigt.
12/01/2014 20:46 BigBrainAFK#12
Hab mich umentschieden:

Website bleibt auf dem Windows Root also brauch ich nichts ändern und den Linux Webserver nutz ich für Downloads und Forum.
12/02/2014 00:37 xTwiLightx#13
Ist zwar nicht die perfomanteste Option, aber OK. :D

Man sollte sich trotzdem mit dem Problem auseinandersetzen, irgendwann muss das ja gehen :P

z.B. sollte ODBC auch wirklich auf der Linux Distribu installiert sein - ansonsten fehlt natürlich ein Treiber :D
12/02/2014 09:55 BigBrainAFK#14
Ich meine so is es die beste Teilung von einer Last falls mein Server mal groß werden sollte. Mal ne andere Frage nebenbei: Wv braucht ein FlyFF Server so pro Spieler an Hardware Resourcen?
12/02/2014 14:36 xTwiLightx#15
Pro Spieler ist immer so ne Sache - das hängt von der Fülle des Inventars ab, anderen Faktoren wie Housing usw... aber wir sprechen wir von ein paar Kilobyte, wenn es hochkommt.

Ich müsste mal schauen wie der Worldserver von Forsaken zu Peakzeiten läuft - auf 300+ Spieler kommen glaube ich 200-300 MB.

Allgemein braucht man für Flyff kein CPU Monster, ein solider Quadcore ist aber nie falsch und was anderes wird kaum nkch angeboten.
RAM sollte ein bisschen mehr sein. Um den SQL Server voll laufen lassen zu können, sollten schon 4GB RAM für diesen angerechnet werden. Dazu dann noch 300-500 für den TransServer und 1,5-2 GB für Worldserver...
Wenn dann noch ein Webserver läuft, einen Puffer von nem GB eingerechnet, und Windows' RAM-Hunger mit einbezieht, sind 8GB auf nem dedicated Server ein Muss.
Speicherplatz richtet sich natürlich nach der Laufzeit des Servers und dem Backup Intervall, etc... mit 500GB sollte man eigentlich Ruhe haben.