0

PHP を使用して Azure MSSql サーバーで (非常に) 単純なクエリを実行しようとしていますが、機能せず、次のメッセージが出力されます。

警告: mssql_query(): メッセージ: オブジェクト名 'MyTable' が無効です。(重大度 16)

基になるドライバーが master データベースに直接接続していると思われるため、オブジェクトを使用できません。したがって、明らかな解決策は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 - Apache 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', 'user@mydatabase', '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);
?>

私がすでに訪問した以前のリソースは次のとおりです。 -

4

1 に答える 1