如何用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)的用戶表。
環(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)的用戶表。

