2

Webホストを切り替えて、データベースをバックアップしています。新しいホストの制限により、.bakファイルを復元できず、復元するために送信する必要がありました。彼らがそれを復元したら、私は私のアプリケーションを実行しました私はこれを手に入れました

System.Data.SqlClient.SqlException: Invalid object name "<table name>"

アプリケーションからテーブルをクエリしようとするときはいつでも。ただし、同じユーザー名とパスワードを使用してManagement Studioからログインし、テーブルをクエリすることに問題はありません。

SQLServer2008でmvc3サイトを実行しています

アプリケーションを実行しようとしたときにこれらの例外が発生する理由を誰かが知っていますか?

編集:

いくつかの詳細情報:

古いデータベースで使用していたユーザー名はKimpo54321だったので、作成したすべてのテーブルにはこのKimpo54321のようにプレフィックスが付けられました。そこで、Webアプリの最初のクエリに追加してみたところSELECT * FROM Kimpo54321.<tablename>、例外なくクエリが渡されました。

これで、アプリケーションの前半で各テーブル名の前にこれを付ける必要がなくなり、すべてのクエリに適用したくありません。これを修正する方法はありますか?

編集:

これを実行して、各テーブルのスキーマ変更行を取得し、すべてをに変更してdbo、最終的に機能しました。答えを見つける正しい方向に私を向けてくれたthnxaaron

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
    FROM sys.Objects o 
    INNER JOIN sys.Schemas s on o.schema_id = s.schema_id 
    WHERE s.Name = 'yourschema'
    And (o.Type = 'U' Or o.Type = 'P' Or o.Type = 'V')
4

2 に答える 2

5

スキーマを参照していますか(例:dbo.tableとtable)?新しいホストのユーザーが、古いホストのユーザーとは異なるデフォルトスキーマを持っている可能性があります。どのように「テーブルをクエリ」しますか?オプションの1つを右クリックして選択するか、アプリケーションによって発行されたまったく同じクエリを使用しますか?

于 2011-07-15T18:34:32.487 に答える
0

これは、Webアプリのユーザーを復元されたデータベースに再度追加する必要がある場合に発生する可能性があります。特定のユーザーは、データベースが別のSQLサーバーに復元されたときに権限を維持しません。

于 2011-07-15T18:25:40.500 に答える