我試圖使用PHP執行Azure的MSSQL Server上的非常簡單的查詢,但它不工作,並打印如下消息:如何在Azure的特定數據庫中進行查詢?
警告:mssql_query():消息:無效的對象名稱MyTable的」。 (嚴重性16)
我認爲底層驅動程序直接連接主數據庫,這就是爲什麼我的對象不可用。所以,顯而易見的解決方案可能是mssql_select_db()功能,但它引發的後續錯誤消息:
警告:mssql_select_db():消息:USE語句不支持數據庫之間 開關。使用新的連接連接到另一個數據庫 。 (嚴重性16)
那麼,你們中的任何一個人都曾經使用PHP成功地查詢過MS Azure SqlServer嗎?
附加信息: 1 - 連接看起來沒問題,沒有錯誤。 2 - 我沒有資格/前綴我的對象與database.schema,否則Azure的說:
警告:mssql_query():消息:參照「myDatabase.dbo數據庫和/或服務器 名。 MyTable'在此版本的 SQL Server中不受支持。 (嚴重性15)
常規配置爲: - CentOS的 - PHP 5.3.3 - freetds的 - 阿帕奇2
/etc/freetds.conf相關部分就像如下:
[global]
#TDS protocol version
; tds version = 4.2
[MyServerAtAzure]
host = mydatabase.database.windows.net
port = 1433
tds version = 8.0
database = MyDatabase
client_charset = UTF-8
TSQL的輸出的:
# tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc
MS db-lib source compatibility: yes
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 4.2
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes
最後,PHP代碼:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
# Older FreeTDS installations need the FREETDSCONF Environment variable
putenv('FREETDSCONF=/etc/freetds.conf');
# Current release of FreeTDS uses the FREETDS environment variable. So we set both to be sure
putenv('FREETDS=/etc/freetds.conf');
$link = mssql_connect('MyServerAtAzure', '[email protected]', 'password');
if (!$link) die('<br>Oops! CannotConnect');
//mssql_select_db('MyDatabase', $link); # FAILS because you can't use "USE" statement
$sql = "SELECT * FROM dbo.MyTable";
$rs = mssql_query($sql, $link);
?>
,我已經訪問過以前的資源有: -
- why-is-my-sql-server-query-failing
- use-statement-is-not-supported-to-switch-between-databases-when-running-query
- PHPFreaks
?是不是當前的版本7點的東西?也許這是問題的一部分... –
供參考的鏈接http://www.idevelopment.info/data/SQLServer/DBA_tips/Programming/PROG_6.shtml#Install FreeTDS http:///stackoverflow.com/questions/10889294/what-is-tds-protocol-version-8- 0-and-why-should-i-use-it – swasheck
再次感謝你,亞倫。現在我會嘗試升級freeTds,而不會破壞其他任何東西。 :-)。工作與否,我會讓你知道。 – MiguelPragier