1

いくつかの初期エラーを解決した後、サーバーに接続できました。私の問題は、テーブルにアクセスできないように見えることです。

freetds.conf ファイルは次のとおりです。

[azure]
host = name.database.windows.net
port = 1433
tds version = 8.0
database = databasename

そして、ここに私のPHPファイルがあります:

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');

$server = 'azure';
$link = mssql_connect($server, 'username@name', 'password');

if (!$link) {
    die('<br/><br/>Something went wrong while connecting to MSSQL');
}
else {

$query_result = mssql_query('SELECT * FROM information_schema.tables');

echo "<pre>";
while($row = mssql_fetch_array($query_result)){
    print_r($row).'<br/>';
}
echo "</pre>";

mssql_free_result($query_result);
mssql_close($link);
}

これにより、ブラウザに次のように表示されます。

Array
(
[0] => master
[TABLE_CATALOG] => master
[1] => dbo
[TABLE_SCHEMA] => dbo
[2] => slo_service_dimensions
[TABLE_NAME] => slo_service_dimensions
[3] => VIEW
[TABLE_TYPE] => VIEW
)
Array
(
[0] => master
[TABLE_CATALOG] => master
[1] => dbo
[TABLE_SCHEMA] => dbo
[2] => slo_dimension_settings
[TABLE_NAME] => slo_dimension_settings
[3] => VIEW
[TABLE_TYPE] => VIEW
)

などなど。しかし、私の実際のテーブルについては何もありません。PHPを次のように変更すると、次のようになります。

$result = mssql_query('select Email from Profile');
while($row = mssql_fetch_array($result))
echo $row["Email"] .'<br/>';

ブラウザで次を取得します。

Warning: mssql_query(): message: Invalid object name 'Profile'. (severity 16) in file.php on line 23
Warning: mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 16) in file.php on line 23
Warning: mssql_query(): Query failed in file.php on line 23
Warning: mssql_fetch_array() expects parameter 1 to be resource, boolean given in file.php on line 25

クエリを次のように変更すると、同じことが起こります。

$result = mssql_query('select Email from dbo.Profile');

何か案は?

4

1 に答える 1

0

「Invalid object name 'Profile'」というエラーは、接続が確立され、ログインが成功したことを示します。ログインしているユーザーが、サーバーだけでなく、プロファイル テーブルに対する適切な権限を持っていることを確認してください。ユーザーを datareader ロールに追加する必要がある場合があります。

于 2015-11-06T15:37:10.790 に答える