如何列出 MSSQL 中的所有表?

Posted

技术标签:

【中文标题】如何列出 MSSQL 中的所有表?【英文标题】:How list out all tables in MSSQL? 【发布时间】:2011-07-31 13:55:36 【问题描述】:

我正在使用下面的代码来显示我的数据库中的表。

我得到“连接到数据库”,但没有别的。我的代码正确吗?我可以使用其他方式获取我需要的信息吗?

<?php 
$link = mssql_connect('HOST', 'user', 'pass');

if (!$link || !mssql_select_db('dbname', $link)) 
    die('Unable to connect or select database!');
else
echo"Connected to database";



$v = mssql_query("Select name from sysobjects where type like 'u'");
$row = mssql_fetch_array($v);

echo "<br>";  echo $row[0]; echo "<br>";


mssql_free_result($v);
?>

【问题讨论】:

我不是 100% 确定,但它会起作用:mssql_fetch_array($v, MSSQL_NUM);。另外,您确定选择的数据库吗? 您的查询似乎适用于 MSSQL2000。你有错误吗? 没有错误,只是连接到数据库,没有别的。我确定数据库..我怎么知道它是否有权限问题?我没有托管数据库,在联系主机之前我需要知道。再次感谢 【参考方案1】:

另一种方式,也获取模式名称

SELECT TABLE_CATALOG ,
        TABLE_SCHEMA ,
        TABLE_NAME ,
        TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES

【讨论】:

Thaks MadBender,但仍然没有结果,空白页。你认为问题可能是数据库权限或类似的东西吗?我没有托管数据库,托管它的人可能忘记了一些东西。再次感谢 是的,这是可能的。尝试使用 SSMS 或 SQL Explorer 等应用程序连接并执行此查询。它可能会给你更详细的错误信息。 或者该数据库中可能没有表 嗯,我希望我可以在主机中安装任何这些,但我不能,另一种方法?再次感谢 也许你是对的。我会去托管服务。非常感谢!【参考方案2】:
SELECT * FROM sys.Tables;

应该施展魔法:-D

如果你想查看所有列,我会这样做

SELECT TOP 1 * From Tablename;

所以你会得到一个包含所有列的行,它并不完美,但如果你只是想知道某事,它就可以了

【讨论】:

【参考方案3】:

我这样做:

// Check if table exists
        $sqlExist = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'dem';";
        $stmtExist = sqlsrv_query( $conn_mssql, $sqlExist );
        $exist = $row = sqlsrv_fetch_array( $stmtExist, SQLSRV_FETCH_ASSOC);

        if ($exist == "") 
          echo "Die abgefragte Tabelle existiert nicht oder ist nicht erreichbar!";
         else 
          // MSSQL QUERY ITSELF
          $sql = "SELECT * from dem;";
          $stmt = sqlsrv_query( $conn_mssql, $sql );
          if( $stmt === false) 
              die( print_r( sqlsrv_errors(), true) );
          

          while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) 
            echo $row['id'] . " " . $row['cdemo2'] . ", " . $row['cdemo1'] . "<br>";
          

          sqlsrv_free_stmt( $stmt);

        

【讨论】:

以上是关于如何列出 MSSQL 中的所有表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle SQL 中列出模式中的所有表?

如何在单个结果集中列出 SQL Server 中所有数据库中的所有表?

如何使用 Squirrel SQL 列出数据库中的所有表?

MSSQL所有表中查找某个字段中的一个数据。100分悬赏

如何更改 MSSQL 中所有表、视图和存储过程的架构

使用 SQL 列出表中的所有列 [重复]