プログラムが使用するローカルファイルにデータベースがあります。プログラムの機能は制限されており、いくつかの簡単なクエリを実行する必要がありました。 SQL Server Management Studio Express 2005(SSMSE)をインストールし、SQL Serverインスタンスに接続して、データベースファイルを接続し、クエリを実行しました。これで、元のプログラムはデータベースに接続しなくなります。私はエラーを受け取ります:
ユーザーのデフォルトデータベースを開けません。ログインに失敗しました。ユーザー 'MyComputer\MyUserName'のログインに失敗しました。
SSMSEに戻り、デフォルトのデータベースを設定しようとしました。 Security、Logins、BUILTIN\AdministratorsおよびBUILTIN\Usersを開きました。 Generalの下で、デフォルトのデータベースをプログラムのデータベースに設定しました。 ユーザーマッピングの下で、データベースがチェックされていること、およびdb_datareaderおよびdb_datawriterがチェックされていることを確認しました。
プログラムは接続文字列を使用します。
サーバー=(ローカル)\インスタンス; AttachDbFilename = C:\ PathToDatabase\Database.mdf;統合セキュリティ=真;ユーザーインスタンス= True;
私はデータベース管理についてのすべてを知っています。他に何が欠けていますか?
まず、問題を特定してみます。
プログラムのようにファイルを添付する方法についてはあまり作業していませんが、Management StudioでDBを添付したことも書いています。プログラムを実行する前に、デタッチしてみましたか?おそらく、Management StudioとプログラムがMDFファイルへの排他的アクセスをめぐって競合しているのを見ていますか?
編集:上記のポイント6を追加しました-これは、このタイプのログインのトラブルシューティングに失敗したときに、自分のTODOリストに新しく追加されました。しかし、それはあなたが経験しているものとよく似ています。
EDIT2:最初の編集で、新しいアイテムがリストに追加されました。したがって、コメント内の数字は回答内の数字と一致しません。
これは具体的にあなたの質問に答えていないかもしれませんが、同様の問題を持つ他の人を助けるでしょう
問題は、ユーザーが何らかの理由でアクセスできないデータベースにデフォルト設定されていることです(名前の変更、削除、破損など)。問題を解決するには、次の手順に従ってください。
SQL Serverインスタンスに接続したら、以下のTSQLを実行して、ログインに新しいデフォルトデータベースを割り当てます。
Use master
GO
ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
GO
または、接続したら、デフォルトのデータベース名をUI経由でマスターに変更します
私はついにこれを理解しました、そして私の状況は今夜読んだ他のどの状況とも異なります。
バックアップからデータベースを復元しました。私が使用していた特定のログインユーザーがいることを知っていたので、そのユーザーをSSMSで作成しました。ただし、バックアップに含まれていたデータベースの下に、その名前のユーザーがすでに存在していました。
私はこれを修正するために多くのことをやったので、DBの下のユーザーを簡単に削除することができませんでした。データベースを削除して、再度復元しました。次に:
概要:2人のユーザーがいました。 DBに付属するものと、私が作成したもの。 DBに付属しているものを削除して、独自のものを作成します。
この問題は、デフォルトのデータベースをオフラインにしたときに明らかになりました。次に、ログインできなかったことがわかります。 [接続プロパティ]タブに切り替えて、ドロップダウンを選択して接続したいデータベースを変更することもできませんでした。
([接続のプロパティ]タブで)接続したいデータベースとしてmasterを手動で入力すると、すぐにそれが可能になりました。
まず、「サーバーへの接続」プロンプトのオプション>>ボタンをクリックします。
次に、データベースへの接続を、masterやmsdbなどのサーバー上の既存のデータベースに変更します。
もっと詳しく
私も同じ問題を抱えていて、組み込みのメンバーシップクラス(ビュー内)にアクセスしようとしていること、そして.NetがApp_Dataフォルダーにデータベースを作成しようとしていることがわかりました。
@Membership.GetUser().ProviderUserKey
これにより、システムがトリガーされ、組み込みのメンバーシップシステムに基づいてデータベースを作成しようとします。これは、システムのセットアップ方法とは異なる場合があります。
同様の問題がありましたが、ユーザーインスタンスを起動できるSQL Expressユーティリティをダウンロードする必要がありました。 SSEUtilは、Visual Studioチームがユーザーインスタンスの問題のトラブルシューティングを支援するために作成したツールです。このユーティリティの詳細については、ユーティリティと共にインストールされるRead Meファイルを参照してください。 http://www.Microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en 。
これがお役に立てば幸いです。
私の場合、「任意のデータベースに接続する」正しいパスを設定する必要がありました。
インスタンスでSecurity
に移動し、次にLogins
に移動します。
そこを右クリックすると、properties
が表示されます。Securables
をクリックしてください。
そこでは、任意のデータベースに接続する可能性を与えます。