2013-07-23 32 views
0

我期待刪除與代碼在Access 2007數據庫中創建,使用vb.net的關係。數據庫可能已從舊版本升級。語法錯誤FROM子句中刪除MSystem表中的記錄,關係問題

所以這裏是做了什麼,我打開DB與ADO連接字符串,數據庫加密和密碼保護,我在Mode = 12也開放,以獲得獨家代理權。這一切都有效。我授予SELECT,刪除,以及修改對MSysObjects權限,MSysRelationships管理員用戶。

的問題是使用的關係是一個GUID,它存儲在這些系統表爲純文本,但它不能從它的關係作出,即表中刪除。

ALTER TABLE [MyTable] DROP CONSTRAINT '{D86827C0-some-GUID-6A6449F1FB07}'; 

ALTER TABLE [MyTable2] DROP CONSTRAINT '{D86827C0-some-GUID-6A6449F1FB07}'; 

這失敗監守的GUID不能在表中找到,我試圖在關係的兩側表。我能夠得到szRelationship價值,這是我如何把它應用到上述變更查詢,但如所說的那樣,沒有發現作爲兩個表的關係的名稱。這導致我相信數據庫可能已經從較舊的Access遷移過來。系統對象表顯示了這種關係,所以我知道它存在並出現在關係圖中。它也可以手動刪除。我有數百個需要這個編輯的數據庫。

所以我的另一種方法是直接從兩個系統表中刪除。

DELETE [MSysObjects], [MSysRelationships] FROM [MSysObjects] 
INNER JOIN [MSysRelationships] 
WHERE [MSysObjects].[Name] = [MSysRelationships].[szRelationship] 
AND [MSysObjects].[Name] = '" & relationName & "'; 

但是,這會在From子句中返回一個Syntax錯誤。我已經搜索了高和低的替代語句來嘗試和調試這一個,不幸運...這個鏈接提供了一些樣本和語法的起點。

delete from two tables in one query

回答

0

事實證明語法錯誤在我需要這些[] ALTER語句....現在

ALTER TABLE [MyTable] DROP CONSTRAINT [{D86827C0-some-GUID-6A6449F1FB07}]; 

作品。