CakeFest 2024: The Official CakePHP Conference

sqlsrv_connect

(No version information available, might only be in Git)

sqlsrv_connectAbre uma conexão com um banco de dados Microsoft SQL Server

Descrição

sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource

Abre uma conexão com um banco de dados Microsoft SQL Server. Por padrão, a conexão é tentada usando a Autenticação do Windows. Para conectar usando Autenticação do SQL Server, inclua "UID" e "PWD" no array de opções de conexão.

Parâmetros

serverName

O nome do servidor ao qual uma conexão é estabelecida. Para conectar a uma instância específica, siga o nome do servidor com uma barra invertida e o nome da instância (por exemplo, serverName\sqlexpress).

connectionInfo

Um array associativo que especifica opções para conectar ao servidor. Se os valores para as chaves UID e PWD não forem especificados, a conexão será tentada usando a Autenticação do Windows. Para uma lista completa de chaves suportadas, consulte » Opções de Conexão SQLSRV.

Valor Retornado

Um recurso de conexão. Se uma conexão não puder ser aberta com sucesso, false é retornado.

Exemplos

Exemplo #1 Conectar usando Autenticação do Windows.

<?php
$serverName
= "serverName\\sqlexpress"; //serverName\instanceName

// Como UID e PWD não são especificados no array $connectionInfo,
// A conexão será tentada usando a Autenticação do Windows.
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"Connection established.<br />";
}else{
echo
"Connection could not be established.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Exemplo #2 Conectar especificando um nome de usuário e senha.

<?php
$serverName
= "serverName\\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"Connection established.<br />";
}else{
echo
"Connection could not be established.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Exemplo #3 Conectar em uma porta expecífica.

<?php
$serverName
= "serverName\\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"Connection established.<br />";
}else{
echo
"Connection could not be established.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Notas

Por padrão, o sqlsrv_connect() usa pooling de conexão para melhorar o desempenho da conexão. Para desativar o pooling de conexão (ou seja, forçar uma nova conexão em cada chamada), defina a opção "ConnectionPooling" no array $connectionOptions para 0 (ou false). Para mais informações, consulte » Pooling de Conexão SQLSRV.

A extensão SQLSRV não possui uma função dedicada para alterar qual banco de dados está conectado. O banco de dados de destino é especificado no array $connectionOptions que é passado para sqlsrv_connect. Para alterar o banco de dados em uma conexão aberta, execute a seguinte consulta "USE dbName" (por exemplo, sqlsrv_query($conn, "USE dbName")).

Veja Também

  • sqlsrv_close() - Fecha uma conexão aberta e libera os recursos associados à conexão
  • sqlsrv_errors() - Retorna informações de erro e aviso sobre a última operação SQLSRV executada
  • sqlsrv_query() - Prepara e executa uma consulta

add a note

User Contributed Notes 5 notes

up
5
Eion Robb
8 years ago
As mentioned at https://msdn.microsoft.com/en-us/library/cc296193.aspx the connection will convert some data into PHP data types. Of particular difference to other database functions in PHP is that dates will be output as objects instead of strings.

To make the sqlsrv_fetch_{array|object}() functions return dates/times/datetimes as strings instead, specify:
'ReturnDatesAsStrings' => true
in the $connectionInfo array.

For more info about this behaviour, see https://msdn.microsoft.com/en-us/library/ee376928.aspx
up
4
alvaro at demogracia dot com
7 years ago
You can use the connectionInfo parameter to specify connection encoding, e.g.:

<?php
$connectionInfo
= [
'CharacterSet' => 'UTF-8',
];
$conn = sqlsrv_connect($serverName, $connectionInfo);
?>

Beware though that only two options exist:
- SQLSRV_ENC_CHAR (constant) for ANSI, which is the default
- 'UTF-8' (string) for Unicode
up
-6
mmi at uhb-consulting dot de
5 years ago
to prevent [Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation Errors on Linux
you must add the Connection Parameter 'CharacterSet' => "UTF-8"

Tested with with Driver Version 5.3
up
-23
manav at drupal.org/u/manav
6 years ago
If anybody wants to use
<?php
//..
sqlsrv_connect();
//..
?> method to Fedora-25 then user have to install PECL php-sqlsrv library to connect ms-sql server remotely in php script.
In my case i found the same issue but after some search i got this solution and implement it.... now it works.
up
-57
Anonymous
4 years ago
SQL SERVER 2012 conexion in PHP
<?php
$serverName
= "SERVER"; //serverName\instanceName
$connectionInfo = array( "Database"=>"base", "UID"=>"ex", "PWD"=>"******");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
;

if(
$conn ) {
echo
"Conexión establecida.<br />";
}else{
echo
"Conexión no se pudo establecer.<br />";
die(
print_r( sqlsrv_errors(), true));
}

$sql = "SELECT name FROM [base].[dbo].[table]";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $conn, $sql , $params, $options );

$row_count = sqlsrv_num_rows( $stmt );


if (
$row_count === false)
echo
"Error al obtener datos.";
else
echo
"bien";
//echo $row_count;

while( $row = sqlsrv_fetch_array( $stmt) ) {
print
json_encode($row);
}

sqlsrv_close($conn);
?>
To Top