2013-07-25 54 views
0

我正在將應用程序重新編制爲ZF2並遇到了一個問題。我使用與SQLSRV驅動程序PDO,我需要運行下面的查詢:如何查詢MS SQL數據庫的信息模式

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME 

我的查詢功能看起來是這樣的:

public function getTables() 
{  
    $sql = new Sql($this->dbAdapter); 
    $select = $sql->select(); 

    $select->columns(array('TABLE_NAME')) 
      ->from('INFORMATION_SCHEMA.TABLES') 
      ->order('TABLE_NAME'); 

    $statement = $sql->prepareStatementForSqlObject($select); 

    $results = $statement->execute(); 

    return $results; 
} 

我不斷收到以下錯誤:

SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'INFORMATION_SCHEMA.TABLES'.

是否有一種特殊的方式來編碼?我可以整天查詢標準數據庫表並且沒有問題。

在此先感謝您的任何建議。

回答

1

該查詢也給你的所有tables.Try這

SELECT name 
FROM sys.objects 
WHERE type='U' ORDER BY name 
0

除了sys.objects,你也可以使用sys.tables

SELECT 
    name 
FROM 
    sys.tables AS t 
ORDER BY 
    name 

如果您還需要架構,請檢查此查詢。

SELECT 
    N'[' + s.name + N'].[' + o.name + ']'--I'm not sure what you are doing with your results, but I concatonated the schema with the table name 
FROM 
    sys.schemas AS s INNER JOIN sys.objects AS o 
     ON 
      s.schema_id = o.schema_id 
WHERE 
    o.type = N'U' 
+0

sys.objects和sys.tables在ZF2中不適合我。如果我使用手動創建的PDO對象運行查詢,它工作正常。我在ZF2中從工廠構造數據庫適配器,然後使用返回的dbAdapter構造sql對象。當我var_dump我得到的語句:'SELECT「INFORMATION_SCHEMA.TABLES」。「TABLE_NAME」AS「TABLE_NAME」FROM「INFORMATION_SCHEMA.TABLES」ORDER BY「TABLE_NAME」ASC'似乎是正確的形式。對於sys.tables和sys.objects,它說的是同樣的事情。肯定讓我有點困惑。最壞的情況下,我可以從PDO手動運行它。 –

+0

對不起,我對Zend Framework不熟悉(我可能應該會這樣)。什麼是PDO? – JoeFletch

+0

PHP數據對象(PDO)http://php.net/manual/en/book.pdo.php –

0

我找到了一個解決方案。希望這會幫助其他人。在MSSQL數據庫服務器或Oracle數據庫服務器上訪問多個模式時,全局配置必須關閉「quote_identifiers」選項才能使用數據庫服務器的默認配置。

例如,該配置/自動加載/ global.php將包含:

return array(
'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => "sqlsrv:Server=DATABASE_SERVER;Database=DATABASE;", 
    'charset'  => 'UTF-8', 
    'pdotype'  => 'sqlsrv', 
    'platform_options' => array('quote_identifiers' => false), 
),); 

現在我可以訪問SCHEMA.TABLE的形式,諸如INFORMATION_SCHEMA.TABLES聲明表。

相關問題