Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MS SQL Server 2008 i PHP
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
kolek_p
Witam
Mam mały problem z uzyskaniem dostepu do baz danych w MS SQL Serwerze 2008.
Wykonałem wszystko jak jest opisane w instrukcji w tym linku: Link.
Mam zainstalowanego WampServer 2.0.

Nazwa servera:
KOLEK-9030D69F9\WARSZAWA
Nazwa bazy danych:
Warszawa

i próbuje się połączyc w następujący sposób:

<?PHP
$serverName = "(KOLEK-9030D69F9\WARSZAWA)";
$connectionOptions = array("Database"=>"Warszawa");

/* Łączenie przy użyciu uwierzytelniania systemu Windows. */
$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn == false )
{
echo "disconnect";
}else{
echo "connect";
}
?>

w rezultacie otrzymuje na ekranie słowo disconnect.

Prosze o pomoc.
phpion
Możliwe, że problemem jest (z podanego przez Ciebie linka):
Cytat
Domyślnie funkcja sqlsrv_connect nawiązuje połączenie przy pomocy uwierzytelniania systemu Windows. W większości scenariuszy oznacza to, że do połączenia się z serwerem wykorzystywana jest tożsamość procesu serwera sieci Web lub tożsamość wątku (jeśli serwer sieci Web wykorzystuje personifikację), a nie tożsamość użytkownika końcowego.

Spróbuj podać nazwę użytkownika oraz hasło (musisz włączyć możliwość takiego logowania w samym SQL Server bo domyślnie chyba aktywne jest tylko uwierzytelnianie Windows).
Poza tym: może lepiej korzystaj z wbudowanych w PHP funkcji (mssql_connect" title="Zobacz w manualu PHP" target="_manual lub od razu PDO) bo potem możesz mieć problemy na serwerze docelowym.
vokiel
Jeśli możesz ustaw sobie w systemie sterowniki ODBC. Wtedy możesz:
  1. <?php
  2. $connection_string = 'DRIVER={SQL Server};SERVER=SERWERSQL;DATABASE=WAPRO';
  3. $user = 'sa';
  4. $pass = 'tajnehaslo';
  5. $this->connection = odbc_connect( $connection_string, $user, $pass );
  6. //następnie
  7. $result = odbc_exec($this->connection,"SELECT COUNT(".$column.") as 'ILOSC' FROM ".$table." ".$where." ;");
  8. $wiersz= odbc_fetch_row($result);
  9. ?>
kolek_p
Wykonalem cos takiego:

<?php
$connection_string = 'DRIVER={SQL Server};SERVER=KOLEK-9030D69F9\WARSZAWA;DATABASE=Warszawa';
$user = '';
$pass = '';
$connection = odbc_connect( $connection_string, $user, $pass );


if($connection==False)
{
echo "disconnect";
}
else
{
echo "connect";
}

?>

niby wyswietla mi sie connect, ale jak teraz można odczydac dane z jakiejs tabeli??
vokiel
BBCODE

Poza tym przeczytaj mojego posta do końca, tam masz taki fragment po następnie:
  1. <?php
  2. $query = "SELECT * FROM FROM TEST;";
  3. $result = odbc_exec($this->connection,$query);
  4. $wiersze= odbc_fetch_array($result);
  5. print_r($wiersze);
  6. ?>
prachwal
Kod
$serverName = "(local)";
$connectionOptions = array("Database"=>"AdventureWorks");
  
/* Łączenie przy użyciu uwierzytelniania systemu Windows. */
$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn === false )
{ die( FormatErrors( sqlsrv_errors() ) ); }


masz coś takiego jak obsługa błędów i możliwość druknięcia komunikatu

na twoim miejscu nie korzystał bym z ODBC - to najwolniejsze z możliwych połączeń
vokiel
Cytat(prachwal @ 28.05.2009, 00:15:15 ) *
na twoim miejscu nie korzystał bym z ODBC - to najwolniejsze z możliwych połączeń


Może masz jakieś testy wydajności, z chęcią zastosowałbym u siebie najszybsze rozwiązanie.
kolek_p
Wielkie dzieki za pomoc jakos sie udało:D
prachwal
sqlsrv_connect in 0.67229795455933 seconds
odbc_execute in 1.0757539272308 seconds

test na tym samym sprzęcie, tej samej bazie danych i przy tej samej ilości Insertów

Kod
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */

$time_start = microtime(true);

try {

$serverName = "PRZEMEK-PC\SQLEXPRESS";
$connectionInfo = array( "Database"=>"Aplikacja");
$conn = sqlsrv_connect( $serverName, $connectionInfo);


for ($i = 1; $i < 1000; $i++ ) {

/* Set up the parameterized query. */
$tsql = "INSERT INTO dbo.Reports
        (ReportName,
         ReportDesc)
        VALUES
        (?, ?)";

/* Set parameter values. */
$params = array('75123', 'rrr');

/* Prepare and execute the query. */
$stmt = sqlsrv_query( $conn, $tsql, $params);
}

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);

} catch (Exception $e) {
    echo $e;
}

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "sqlsrv_connect in $time seconds\n";
echo '<br>';

$time_start = microtime(true);
try {
$conn = odbc_connect("PRZEMEK", "", "") or die('uuuu cha, cha');

for ($i = 1; $i < 1000; $i++ ) {

/* Set up the parameterized query. */
$tsql = "INSERT INTO dbo.Reports
        (ReportName,
         ReportDesc)
        VALUES
        (?, ?)";

/* Set parameter values. */
$params = array('75123', 'rrr');

/* Prepare and execute the query. */
#$stmt = sqlsrv_query( $conn, $tsql, $params);
$stmt    = odbc_prepare($conn, $tsql);
$success = odbc_execute($stmt, array('75123', 'rrr'));
}

odbc_close($conn);
} catch (Exception $e) {
    echo $e;
}
$time_end = microtime(true);
$time = $time_end - $time_start;

echo "odbc_execute in $time seconds\n";
echo '<br>';
    
?>
wujekgienek
Eeee *#&$987, to nie działa.

--
wyrażaj się

~erix
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.