2009-03-04 98 views
1

所以我只是困惑在這裏。MS SQL Server 2008 - 從MySQL遷移混亂:「從表中選擇XYZ」

我必須將我的數據庫從MySQL遷移到MS SQL Server 2008.我通過SQL Maestros中的「MS SQL Data Wizard」應用程序傳輸數據。它將我的MySQL數據庫「gk」中的數據+結構複製到我的MS SQL Express實例的數據庫「gk」中。

但是,當我連接到MS SQL實例,並嘗試運行SQL查詢,我只當我執行「select * from gk.TABLENAME」或得到結果「select * from gk.gk.TABLENAME」 ......如果我執行「select * from TABLENAME」執行「use gk」後,我得到:

Error: Invalid object name 'TABLENAME'
SQLState: S0002
Error code: 208

如何使這種行爲「正常」?也就是說,我連接到一個特定的數據庫,這樣我就不必明確地告訴它在哪個數據庫/模式中查找表格?

更新: 我應該指定由SQL數據嚮導應用程序創建的結構。查看SQL Server Management Studio上的對象瀏覽器樹,這裏有:

[HOSTNAME]\SQLEXPRESS (SQL Server ...) 
    |-- Databases 
     |-- System Databases 
     |-- gk 
      |... 
      |-- Tables 
        |-- TABLE1 
        |-- TABLE2 
        |-- TABLE3 

...等等。

謝謝。 -Dan

回答

1

在登錄屬性對話框中輸入您的用戶有一個「用戶映射」頁面,您可以在其中設置用戶的默認模式。將它設置爲「gk」(在「gk」數據庫中)應該允許您在沒有完全限定表格的情況下編寫查詢。

1

試試這個,如果你還沒有:

USE gk 
GO 

SELECT * FROM tablename 
+0

不,還是一樣的問題。 – DanM 2009-03-04 18:51:09

0

貌似嚮導創建一個名爲「GK」的數據庫,然後把所有的表名爲「GK」的模式。

如果這些表存在於一個命名模式中(即,除了「dbo」的默認模式之外的某些內容),那麼在查詢它時總是必須指定模式。

注意: 在某些情況下,對於NOT顯式指定模式/所有者會有顯着的性能損失。在老版本的SQL中更重要,但仍然存在。可能不是一個足夠大的差別在應用程序中事,但還是值得了解:

+0

那麼有沒有辦法將這些表移入dbo模式? – DanM 2009-03-04 19:16:06