다음을 통해 공유


방법: SQL Server 인증을 사용한 연결

SQL Server Driver for PHP는 SQL Server에 연결할 때 SQL Server 인증을 지원합니다.

SQL Server 인증은 Windows 인증을 사용할 수 없는 경우에만 사용해야 합니다. Windows 인증을 사용하여 연결하는 방법은 방법: Windows 인증을 사용하여 연결을 참조하십시오.

SQL Server 인증을 사용하여 SQL Server에 연결할 때 고려해야 할 사항은 다음과 같습니다.

  • 서버에 SQL Server 혼합 모드 인증이 설정되어 있어야 합니다.
  • 연결을 설정하려고 시도할 때 UIDPWD 연결 특성이 설정되어 있어야 하며 UIDPWD가 올바른 SQL Server 사용자 및 암호에 매핑되어 있어야 합니다.

참고

닫는 중괄호(})가 포함된 암호는 또 다른 닫는 중괄호로 이스케이프 처리해야 합니다. 예를 들어, SQL Server 암호가 "pass}word"인 경우 PWD 연결 특성의 값은 "pass}}word"로 설정해야 합니다.

SQL Server 인증을 사용하여 SQL Server에 연결할 때 취해야 할 사전 조치는 다음과 같습니다.

  • 네트워크를 통해 웹 서버에서 데이터베이스로 전달되는 자격 증명을 보호(암호화)합니다. SQL Server 2005와 SQL Server 2008에서는 기본적으로 자격 증명이 암호화됩니다. 보안 강화를 위해 서버로 전송되는 모든 데이터를 암호화하려면 Encrypt 연결 특성을 "on"으로 설정합니다.

참고

데이터 암호화는 처리가 복잡하므로 Encrypt 연결 특성을 "on"으로 설정하면 성능이 저하될 수 있습니다.

  • UIDPWD 연결 특성의 값을 PHP 스크립트에 일반 텍스트로 포함하지 마십시오. 이러한 값은 적절히 제한된 권한이 설정된 응용 프로그램별 디렉터리에 저장되어야 합니다.
  • sa 계정을 사용하지 마십시오. 원하는 권한을 가진 데이터베이스 사용자에게 응용 프로그램을 매핑하고 강력한 암호를 사용합니다.

참고

연결을 설정할 때 UIDPWD 이외의 다른 연결 특성도 설정할 수 있습니다. 지원되는 연결 특성의 전체 목록은 sqlsrv_connect를 참조하십시오.

다음 예제에서는 SQL Server 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결합니다. 필수 UIDPWD 연결 특성의 값은 C:\AppData 디렉터리의 응용 프로그램별 텍스트 파일인 uid.txtpwd.txt에서 가져옵니다. 연결을 설정한 후에는 서버를 쿼리하여 사용자 로그인을 확인합니다.

이 예제에서는 SQL Server와 AdventureWorks 데이터베이스가 로컬 컴퓨터에 설치되어 있다고 가정합니다. 브라우저에서 이 예제를 실행하면 모든 출력이 브라우저에 기록됩니다.

<?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";

/* Get UID and PWD from application-specific files.  */
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array( "UID"=>$uid,
                         "PWD"=>$pwd,
                         "Database"=>"AdventureWorks");

/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Unable to connect.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";

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

참고 항목

태스크

방법: SQL Server 인증을 사용한 연결

개념

설명서에 포함된 코드 예제 정보

관련 자료

프로그래밍 가이드
SUSER_SNAME(Transact-SQL)
방법: SQL Server 로그인 만들기
방법: 데이터베이스 사용자 만들기
사용자, 역할 및 로그인 관리
사용자와 스키마 분리
Grant 개체 권한(Transact-SQL)