Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP i MSSQL 2005 EXPRESS
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
genger
Mam na WIN XP SP2 zainstalowane XAMPP dla Windows Version 1.6.3a (PHP 5.2.3).
Chcę połączyć się z MSSQL SERVER 2005 EXPRESS (tez jest na tym kompie). Podejrzewam, że mam problemy z plikiem ntwdblib.dll . Czy w ogóle da się połączyć przy użyciu tej biblioteki z wersją serwera 2005 EXPRESS?
angel2953
plik ntwdblib.dll dostarczany razem z PHP 5 (wersja 2000.2.8.0) jest jakiś wadliwy. Potrzebujesz wersji 2000.80.194.0 tej biblioteki. Znajdziesz ją na googlach
genger
Znalzałem ntwdblib.dll w wersji 2000.80.194.0, umieściłem go w C:\WINDOWS\system32 i w katalogu PHP. Dodatkowo stworzyłem usera do MSSQL SERVERA, który działa przy logowaniu
W MSSQL management studio express z authentisation: SQL SERVER.
Nazwę servera w oknie logowania mam: MACIEKM\SQLEXPRESS; login: php; hasło: maciekm
Wykonuję w php skrypt:
<? $polacz_z_serwerem = mssql_connect('maciekm\sqlexpress', 'php', 'maciekm') or die ("nie można się połączyć");
?>
Otrzymuję w przegladarce wynik:
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: maciekm\sqlexpress in C:\xampp\htdocs\users\mssql\index.php on line 204
nie można się połączyć
angel2953
ok mam:

Po pierwsze:
to jest plik ntwdblibdll, który mam w katalogu C:\Serwery\PHP (tutaj jest cała instalka PP 5.2.6 - plik php.exe i cała reszta od PHP) i tylko tam,

Po drugie:
Sprawdź czy masz możliwość nawiązywania połączeń przez TCP/IP czylli:
1. Uruchom SQL Server Configuration Manager
2. w sekcji SQL Server 2005 Network Configuration masz Protocols for NAWA_INSTACJI_NADANA_PRZY_INSTALACJI po prawej stronie masz dostępne protokoły dostępu do bazy (domyślnie jest tylko Shared Memory),
Sprawdź czy TCP/IP jest []enabled[/b] jak nie to:
3. Kliknij PPM na TCP/IP i daj Enable i zrestartuj usługę MSSQL
4. znów w "SQL Server Configuration Mnager" w sekcji "Protocols for [...]" na TCP/IP kliknij PPM i Properties na drugiej zakładce powinieneś mieć numer portu (możesz go sam dzdefiniować - chyba wtedy nie będzie się zmieniał po każdorazowym restarcie usługi)


i teraz prosty kod na połączenie:
  1. <?php
  2.  
  3.  
  4. // tutaj podajesz port z Managera
  5. $servername='localhost,4634';
  6. $username='username';
  7. $password='userpass';
  8.  
  9. $conn = mssql_connect($servername, $username, $password);
  10.  
  11. if(!$conn) {
  12. die("Connection failed...");
  13. } else {
  14. echo "Connection OK\n";
  15. }
  16.  
  17. mssql_close($conn);
  18.  
  19.  
  20. ?>


zapisz wszystko do pliku i uruchom go w przeglądarce. Jak będzie Connection OK to się połączyłeś.
vokiel
Jeśl to jest MSSQL 2005 Express to w połączeniu trzeba podać port (1433)
  1. <?php
  2. $this->connection = mssql_connect('SERWERSQL,1433','sa','123') or die(mssql_get_last_message());
  3. $this->db = mssql_select_db('BAZA',$this->connection) or die(mssql_get_last_message());
  4. ?>
genger
Wszystkie ustawienia jak w Waszych podpowiedziach (plik nowy i TCP/IP było tak skonfigurowane, nawet logowałem jako sa) i nadal nie działa:
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: MACIEKM\SQLEXPRESS,1433 in C:\xampp\htdocs\users\mssql\index.php on line 204
termin
wczoraj inastalowalem na windowsie tez xamp i ruszyło bez problemu, co zrobiłem:

podmieniłem bibliotekę ntwdblib.dll w wersji 2000.80.194.0 w c:\xamp\apache\bin\ po uprzednim zatrzymaniu xampa.

nastepnie zainstalowałem MDAC w wersji 2.8 i potem MDAC 2.8 SP1

restart kompa i działa.
genger
Podmieniłem bibliotekę ntwdblib.dll w wersji 2000.80.194.0 w c:\xamp\apache\bin\ po uprzednim zatrzymaniu xampa (bo używał ten plik apache). IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
ZADZIAŁAŁO NARESZCIE!!!. Wykonuję próbnie selecta i mam wynik w przęglądarce UH, DZIĘKUJĘ WSZYSTKIM ZA POMOC:

$polacz_z_serwerem = mssql_connect('MACIEKM\SQLEXPRESS', 'php', 'maciekm') or die ("nie można się połączyć");

if(!$polacz_z_serwerem) {
die("Connection failed...");
} else {
echo "Connection OK\n";
}
$myDB = 'Student_kurs';
$selected = mssql_select_db($myDB, $polacz_z_serwerem)
or die("Couldn't open database $myDB");


$query = "select * from Student ";

$result = mssql_query($query) or die;

while ($row = mssql_fetch_array($result))
{
print $row[1];
print '<BR>';

}





jeszcze odnośnie konfiguracji MSSQL SERVERA i jego użytkownika dla php znalazłem fajny artykuł: http://net.ratio.eu.org/2008/05/n-w-plecy-...ms-sql.html

Oto jego część dotyczącą MSSQL SERVERA pod XP.
Konfiguracja SQL Servera 2005

Teraz czeka nas trochę klikania - jak to na Windowsie ;p Uruchamiamy SQL Server Surface Area Configuration i klikamy Surface Area Configuration for Services and Connections. W nowym oknie rozwijamy drzewko po lewej i zaznaczamy Remote Connections. Teraz po prawej zaznaczamy Local and remote connections, poniżej upewniamy się, że aktywna jest opcja pierwsza (Using TCP/IP only) lub ewentualnie trzecia i zatwierdzamy zmiany przyciskiem OK. Zostaniemy poinformowani o konieczności ponownego uruchomienia serwera w celu wprowadzenia zmian. Oczywiście dajemy OK, ale jeszcze nie restartujemy niczego.

Zamykamy wszystkie okienka, odpalamy SQL Server Management Studio i logujemy się. W oknie Object Explorer klikamy prawym przyciskiem myszy główną gałąź (tak, to ta z nazwą naszego hosta ;>), a następnie z menu kontekstowego wybieramy Properties. Otwiera się okno ustawień. Po lewej na liście Select a page zaznaczamy Security. Po prawej stronie widnieją teraz w czterech grupach ustawienia zabezpieczeń. W grupie Server authentication wybieramy SQL Server and Windows Authentication mode. Zatwierdzamy przez OK. Kolejny raz pojawi się komunikat dotyczący konieczności restartu. Wbijamy OK i lecimy dalej.

Wracamy do naszego drzewka. Rozwijamy teraz gałąź Security i klikamy prawym przyciskiem myszy na Logins. Z menu kontekstowego wybieramy New Login.... Przechodzimy do utworzenia nowego użytkownika dla PHP. Z sekcji Select a page wybieramy General. Po prawej podajemy nazwę usera, zaznaczamy opcję SQL Server authentication, ustalamy oraz potwierdzamy hasło dostępu i usuwamy zaznaczenie z checkboksa przy Enforce password policy. Przechodzimy do Server Roles (lewe menu). Na liście dostępnych ról zaznaczamy sysadmin i zatwierdzamy wszystko przez OK. Oczywiście można utworzyć i przypisać PHP osobną rolę, choćby ze względów bezpieczeństwa, jednak do zastosowań domowych przedstawiona konfiguracja powinna w zupełności wystarczyć.

Na koniec, wieńcząc nasze karkołomne zmagania z konfiguracją SQL Servera, uroczyście dokonujemy jego ponownego uruchomienia (eee... zrymowało się? ;p). Powtórnie popełniając prawoklik na najwyższej gałęzi drzewa Object Explorera wybieramy tym razem opcję Restart. Serwer zapyta jeszcze tylko czy aby na pewno chcemy mu to uczynić, na co odpowiemy soczystym Yessss.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.