MS SQL Server 2008-MySQLからの移行における混乱re:“ select XYZ from TABLE”

StackOverflow https://stackoverflow.com/questions/611850

質問

ここで混乱しているだけです。

MySQLからMS SQL Server 2008にデータベースを移行する必要があります。「MS SQL Data Wizard」を使用してデータを転送しました。 SQL Maestrosのアプリ。 MySQLデータベース「gk」からデータ+構造を取りました。それをデータベース" gk"にコピーしましたMS SQL Expressインスタンスで。

しかし、MS SQLインスタンスに接続してSQLクエリを実行しようとすると、" select * from gk.TABLENAME "を実行したときにのみ結果が得られます。または" select * from gk.gk.TABLENAME " ...を実行すると、" select * from TABLENAME " " use gk "を実行すると、次のようになります:

  

エラー:オブジェクト名「TABLENAME」が無効です
  SQLState:S0002
  エラーコード:208

この動作を「通常」にするにはどうすればよいですか?つまり、特定のデータベースに接続するので、どのデータベース/スキーマでテーブルを見つけるかを明示的に指定する必要はありませんか?

更新: SQL Data Wizardアプリによって作成された構造を指定する必要があります。 SQL Server Management Studioのオブジェクトブラウザツリーを見ると、次のことがわかります。

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

...など。

ありがとう。 -ダン

役に立ちましたか?

解決

ユーザーの[ログインプロパティ]ダイアログには、[ユーザーマッピング]があります。ユーザーのデフォルトスキーマを設定できるページ。 「gk」に設定します; (" gk"データベース内)を使用すると、テーブルを完全に修飾せずにクエリを記述できます。

他のヒント

まだ試していない場合は、これを試してください:

USE gk
GO

SELECT * FROM tablename

ウィザードが" gk"というデータベースを作成し、" gk"というタイトルのスキーマにすべてのテーブルを配置するように見えます。

テーブルが名前付きスキーマ(つまり、" dbo"のデフォルトスキーマ以外のもの)に存在する場合、クエリを実行するときは常にスキーマを指定する必要があります。

注: 状況によっては、スキーマ/所有者を明示的に指定しないと、パフォーマンスが大幅に低下します。 SQLの古いバージョンでより重要ですが、まだあります。アプリケーションで問題になるほど大きな違いではないかもしれませんが、まだ知っておく価値があります:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top