T-SQL查詢access的數(shù)據(jù)表名的列表

字號:

如何用TSQL判斷某個表在ACCESS中是否存在,也就是如何用tsql顯示access的用戶表,其實access有一個隱藏了類似于sysobjects的系統(tǒng)表,并且必須設置權(quán)限才可以訪問得到,下面考試大整理的測試過程:
    環(huán)境:SQL SERVER 2005,ACCESS2000
    首先,我們讓類似于MSSQL的幾個系統(tǒng)表顯示出來,點擊工具>選項>視圖>系統(tǒng)對象前面打上勾,點確定,你會發(fā)現(xiàn)在對象>表下面多出5個MS打頭的表,這是就隱藏的系統(tǒng)表。
    接著,我們?nèi)绻诓樵兎治銎髦羞\行:
    select name
    from
    OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db1.mdb','select * from MSysObjects')
    報錯如下:
    消息 7357,級別 16,狀態(tài) 2,第 1 行
    無法處理對象 "select * from MSysObjects"。鏈接服務器 "(null)" 的 OLE DB 訪問接口 "microsoft.jet.oledb.4.0" 指示該對象沒有列,或當前用戶沒有訪問該對象的權(quán)限。
    其實這是因為沒有權(quán)限的原因造成的,那么我們打開這個操作權(quán)限,考試大提示工具>安全>用戶與組安全>選表msysobjects,設定權(quán)限,點確定后再運行上面的語句看看,
    select name
    from
    OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db1.mdb','select * from MSysObjects')
    where type = 1 and flags = 0
    /*
    name
    ta
    Switchboard Items
    myclass
    ta1
    ta2
    (5 行受影響)
    */
    注:以上考試大測試的ACCESS內(nèi)的用戶表。