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