Witam.

Ostatnio postanowiłem przetestować MS SQL Server 2008 Express Edition na platformie Windows Server 2008 Enterprise. W tym celu:
1. Zainstalowałem, skonfigurowałem i sprawdziłem poprawność współdziałania IIS 7.0 z PHP 5.2.6 jako moduł FastCGI.
2. Skopiowałem potrzebne pliki do C:\Windows (plik php.ini) i C:\Windows\system32 (biblioteka ntwdblib.dll). W pliku C:\Windows\php.ini poustawiałem to wszystko, co potrzeba dla działania PHP jako modułu FastCGI. Poza tym dodałem odpowiednie rozszerzenia dla bazy danych MS SQL (mssql), ścieżki do katalogu doc_root i php/ext itd.
3. Zainstalowałem bibliotekę PEAR DB do obsługi najnowszej bazy danych firmy Microsoft.
4. Zainstalowałem MS SQL Server 2008 Express Edition with Advanced Features z domyślnymi ustawieniami.
5. Zalogowałem się do MS SQL 2008 Express Edition i utworzyłem przykładową bazę danych.

Dodam, że ww. składniki zostały do testów zainstalowane na jednej maszynie a identyczna konfiguracja działa beż żadnych problemów z bazami MS SQL 2000 i MS SQL 2005. Zaś z MS SQL Server 2008 Express Edition nie chce działać. Podejrzewałem, ze problem tkwi w bibliotece C:\Windows\system32\ntwdblib.dll ale (chyba?) nie. Podmiana bibliotek dostarczanych wraz z PHP 5.2.6 (wersja 2000.2.8.0) jak i z MS SQL 2000 (2000.80.2039.0) nic nie pomagają. Nadal nie mogę połączyć się z ww. bazą danych.

Hmm... zastanawiam się gdzie tkwi diabeł. Czy ktoś z Kolegów może mi wskazać co robię źle? Z góry dziękuję.


Edycja:
Już wszystko poprawnie działa biggrin.gif I to bez biblioteki ntwdblib.dll. Hmm... trochę to dziwne...

Poniżej prosta funkcja w PHP do połączenia z bazą MSSQL2008 Express Edition z poziomu skryptu PHP:

  1. <?php
  2. function polaczenie()
  3. {
  4.  require_once 'DB.php';
  5.  
  6.  $polacz = DB::connect('mssql://user:haslo@nazwa_serweraSQLEXPRESS/baza_danych');
  7.  
  8.  if (DB::isError($polacz))
  9.    {
  10.      echo "Nie można połączyć się z bazą danych.";
  11.    }      
  12.    else
  13.     {
  14.       echo "Połączono się z bazą danych.";
  15.     }
  16. }
  17. ?>


Gdzie SQLEXPRESS nazwa domyślnej instancji.