2

Webホストを切り替えてデータベースをバックアップしています。私の新しいホストのいくつかの制限のため、私は.bakファイルを復元することができず、復元するためにそれらに送信しなければなりませんでした。彼らはそれを復元したら、私は、アプリケーションからテーブルを照会しようとするたびに、私はこのSQL Server 2008データベースを復元した後に「無効なオブジェクト名」

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

を取得する私のアプリケーションを実行しました。しかし、管理スタジオから同じユーザー名とパスワードでログインしてテーブルを照会することに問題はありません。

私は、SQL Server 2008の

でMVC 3サイトを実行している私のアプリケーションを実行しようとしたとき、私はこれらの例外を取得する理由誰でも知っていますか?

EDIT:

いくつかのより多くの情報:

私は私の古いデシベルで使用していたユーザー名は、私が作成していたので、すべてのテーブルがこのKimpo54321のように接頭辞しまっKimpo54321ました。だから私はそれがSELECT * FROM Kimpo54321.<tablename>となるクエリと例外なく渡されるので、私のWebアプリケーションの最初のクエリに追加しようとしました。

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

EDIT:

私は各テーブルのスキーマのALTER行を取得するには、これを実行し、dboにすべてを変え、そのが最終的に取り組んでいます。 thnxアーロンは正しい方向に私を指しているため、この可能性が高いWebアプリケーションのユーザーは、復元されたデータベースに再度追加する必要のある問題です答え

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

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

+0

答えが投稿されたあと、私の質問を編集していました。管理スタジオのトップ1000を選択してテーブルを右クリックして、テーブルスキーマ(kimpo54321)をテーブル名の前に付け加えてみましょう。マネジメントスタジオのメニューツリーの[ログイン]フォルダをクリックしてみました。ユーザーマッピングにkimpo54321スキーマを追加しようとしました。私はエラーメッセージ "ユーザーdboを変更することはできません"が表示され、何も起こらない両方のスキーマを追加しようとすると、デフォルトのスキーマはまだdboです。どのようにこれを変更できますか? – Kimpo

0

を見つけます。特定のユーザーは、データベースが別のSQLサーバーにリストアされたときに、その権限を維持しません。

関連する問題