2014-01-17 70 views
1

我正在研究必須通過PHP & PDO連接到MS SQL 2008 R2的Web應用程序。 我已成功安裝了驅動程序,並與檢查的話:通過XAMPP連接到SQL 2008 R2服務器

var_dump(PDO::getAvailableDrivers()); 

我用兩個Windows服務器(均爲2008年),一個用於SQL數據庫和其它的XAMPP。我們有大約八個程序從其他服務器連接到SQL服務器,所以我的猜測是連接問題不是SQL服務器本身。

這裏有一個很簡單的例子,從應用程序插入到MS SQL數據庫表:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){  
$company  = $_POST['company'];  
$name   = $_POST['name']; 
$firstname  = $_POST['firstname']; 
$number   = $_POST['number'];  
$host   = $_POST['host']; 
$licenseplate   = $_POST['plate']; 
$reason   = $_POST['site']; 
$timein   = date('Y-m-d H:i:s'); 

$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
$sql = "INSERT INTO visitors (visitor_name, visitor_firstname, visitor_company, visitor_number, visitor_plate, visitor_in) VALUES (:lname, :fname, :company, :pnumber, :lplate, :tin)";  
$q = $db->prepare($sql);  
$q->execute(array(':lname'=>$name, ':fname'=>$firstname, ':company'=>$company, ':pnumber'=>$number, ':lplate'=>$licenseplate, ':tin'=>$timein)); 

下面是一些額外的信息:

的SQL服務器的主機名(計算機名本身)=的SQL SERVER的SQLSERVER

名稱(在SQL Server Management Studio中=我在哪裏連接)= MSSQLSERVER2

這裏是我的問題:

我不能夠成功連接到數據庫,我的猜測是其有關這

$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************"); 

這裏我用Server=MSSQLSERVER2但是這僅僅是在SQL Server的服務器的名稱管理工作室。無處指向服務器本身也許這是我的問題,我需要一個ODBC連接?我在互聯網上閱讀,這只是在Linux環境中必需的?

有人可以幫我解釋一下我做錯了什麼嗎?我需要建立一個額外的連接嗎?

我想問的最後一個問題是我在哪裏可以看到要連接的端口號?

new PDO("sqlsrv:Server=MSSQLSERVER2,1433; 

這是我收到我的網頁上的錯誤:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IMSSP]: This extension requires the Microsoft SQL Server 2012 Native Client ODBC Driver to communicate with SQL Server. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: go.microsoft.com/fwlink/?LinkId=163712';

+0

哪個驅動程序是你安裝程序使用?官方微軟的(http://www.microsoft.com/en-us/download/details.aspx?id=20098)?你是否收到任何錯誤信息,如果有,你可以將它們發佈到你的問題中嗎? – Kev

+0

對於爲什麼在生產IIS服務器上使用XAMPP也感到好奇,因爲PHP是Windows 2008+上的頭等公民。 – Kev

+0

這是我在我的頁面上檢測到的錯誤:致命錯誤:帶有消息'SQLSTATE [IMSSP]的未捕獲異常'PDOException':此擴展需要Microsoft SQL Server 2012本機客戶端ODBC驅動程序與SQL Server進行通信。訪問以下URL以下載適用於x86的Microsoft SQL Server 2012 Native Client ODBC驅動程序:http://go.microsoft.com/fwlink/?LinkId = 163712'。我使用Xampp的原因是因爲在同一臺服務器上已經有2個IIS運行的實例了+我對IIS的瞭解不多 – Raz3rt

回答

1

線索來解決你的問題是錯誤消息:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IMSSP]: This extension requires the Microsoft SQL Server 2012 Native Client ODBC Driver to communicate with SQL Server. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: go.microsoft.com/fwlink/?LinkId=163712';

會看起來您沒有安裝SQL Server Native Client驅動程序。

瀏覽此網址:

Microsoft® SQL Server® 2012 Feature Pack

向下滾動,直到您看到:

Microsoft® SQL Server® 2012 Native Client

下載並運行該X86包http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409

+0

這嚴重影響了我......我安裝了本機客戶端,現在出現以下錯誤:致命錯誤:帶有消息'SQLSTATE [08001]'的未捕獲異常'PDOException':[Microsoft] [SQL Server Native Client 11.0] TCP提供程序:(轉換)由於連接被拒絕,無法連接到計算機。我認爲我知道我的問題在哪裏,我的sql服務器上啓用了TCP/IP,但是在我的sql服務器上的TCP/IP屬性中沒有分配tcp端口。這就像有人要求我現在沒有良好的知識駕駛飛機... – Raz3rt

+0

@ user3107003 - 這是一個SQL服務器在您的工作站上本地運行嗎? – Kev

+0

@ user3107003 - 你有沒有解決這個問題?我似乎已經解決了你的第一個問題,所以也許在盒子裏打勾是值得的。你的其他問題實際上是一個單獨的問題。 – Kev