20

プログラムで使用されるローカルファイルにデータベースがあります。プログラムの機能が制限されているため、いくつかのクイッククエリを実行する必要がありました。SQL Server Management Studio Express 2005(SSMSE)をインストールし、SQL Serverインスタンスに接続し、データベースファイルを添付して、クエリを実行しました。これで、元のプログラムはデータベースに接続しなくなります。エラーが発生しました:

ユーザーのデフォルトデータベースを開くことができません。ログインに失敗しました。ユーザー'MyComputer\MyUserName'のログインに失敗しました。

SSMSEに戻り、デフォルトのデータベースを設定しようとしました。セキュリティ、ログイン、BUILTIN\AdministratorsおよびBUILTIN\Usersを開きました。[一般]で、デフォルトのデータベースをプログラムのデータベースに設定しました。[ユーザーマッピング]で、データベースにチェックマークが付いていることと、db_datareaderとdb_datawriterにチェックマークが付いていることを確認まし

プログラムは接続文字列を使用します。

サーバー=(ローカル)\インスタンス; AttachDbFilename = C:\ PathToDatabase \ Database.mdf; 統合セキュリティ=True; ユーザーインスタンス=True;

私はジャックを知っています-データベース管理についてのすべて。他に何が欠けていますか?

4

8 に答える 8

21

これはあなたの質問に具体的に答えていないかもしれませんが、別の問題によって引き起こされた同様の問題を持つ他の人を助けるかもしれません

私の場合、問題は、ユーザーが何らかの理由でアクセスできないデータベースにデフォルト設定されていることでした(名前の変更、削除、破損などが可能です)。問題を解決するには、次の手順に従ってください。

  1. ログインページで再度ログインしてみてください。他のタブで[接続のプロパティ]を選択します。

  2. タブの下で「データベースに接続」を見つけ、tempdbやmasterなどのアクセス可能な既存のデータベースを選択します

  3. SQL Serverインスタンスに接続したら、以下のTSQLを実行して、ログインに新しいデフォルトデータベースを割り当てます。

    Use master
    GO
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
    GO
    

または、接続したら、UIを介してデフォルトのデータベース名をマスターに変更します

記事の抜粋: http ://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/

于 2016-04-18T23:56:38.900 に答える
8

まず、問題を切り分けてみてください。

  1. ファイルのバックアップを取ります!以下の手順のいくつかは、明らかに、状況によってはファイルが消える原因となる可能性があります。
  2. プログラムと同じManagementStudioを介して同じインスタンスに接続していますか?
  3. 可能であれば、使用する予定のないインスタンスをシャットダウンしてみてください。
  4. ユーザーのデフォルトデータベースをmasterに設定し、プログラムのログオンを試みます。
  5. Management Studioを介してユーザーとしてログインしてみてください。セキュリティが統合されているため、プログラムのユーザーとしてManagementStudioを開く必要があります。
  6. 「ユーザーインスタンス」を使用していますか?おそらくそれを知らないのですか?もしそうなら、これは役立つかもしれません:http: //blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx

プログラムのようにファイルを添付することについてはあまり作業していませんが、ManagementStudioでもDBを添付したことを記述しています。プログラムを実行する前に、そこでデタッチしてみましたか?おそらく、Management StudioとプログラムがMDFファイルへの排他的アクセスをめぐって競合しているのを見ていますか?

編集:上記のポイント6を追加しました。これは、このタイプのログインのトラブルシューティングに失敗したときの自分のTODOリストの新機能です。しかし、それはあなたが経験していることとよく似ています。

EDIT2:最初の編集で、新しいアイテムがリストに追加されました。したがって、コメントの番号は回答の番号と一致しません。

于 2011-12-20T23:20:37.183 に答える
6

この問題は、デフォルトのデータベースをオフラインにしたときに明らかになりました。次に私が知っているのは、ログインできなかったことです。[接続のプロパティ]タブに切り替え、ドロップダウンを選択して接続するデータベースを変更することも失敗しました。

接続したいデータベースとしてmasterを手動で入力すると([接続のプロパティ]タブで)、すぐに入力できます。

于 2017-07-06T18:07:07.527 に答える
4

私はついにこれを理解しました、そして私の状況は私が今夜読んだ他のすべてとは異なります。

バックアップからデータベースを復元しました。使用していた特定のログインユーザーがいることを知っていたので、そのユーザーをSSMSで作成しました。ただし、バックアップに付属していたデータベースの下に、その名前のユーザーがすでに存在していました。

これを修正しようと何度も失敗したので、DBの下のユーザーを簡単に削除することができませんでした。データベースを削除して、再度復元しました。それで:

  1. [データベース]->[マイデータベース]->[ユーザー]でユーザーを削除します
  2. [セキュリティ]->[ログイン]でユーザーを再度作成します(DBの下ではありませんが、おそらくそれでも機能します。
  3. 新しく作成されたユーザーに移動します。プロパティを選択します。次に、[ユーザーマッピング]で、データベースをデフォルトにするように指示します。読み取りおよび書き込みアクセスを許可します。

概要:2人のユーザーがいました。DBに付属しているものと、私が作成したものです。DBに付属しているものを削除して、独自のものを作成します。

于 2015-02-20T04:32:40.967 に答える
3

まず、[サーバーに接続]プロンプトの[オプション]>>[ボタン]をクリックします。

次に、データベースへの接続を、masterやmsdbなどのサーバー上の既存のデータベースに変更します。

詳細

https://blog.sqlauthority.com/2008/11/04/sql-server-fix-error-4064-cannot-open-user-default-database-login-failed-login-failed-for-user/

于 2018-04-30T12:03:56.977 に答える
1

これと同じ問題が発生しました。組み込みのメンバーシップクラス(ビュー内)にアクセスしようとしていて、.NetがApp_Dataフォルダーにデータベースを作成しようとしていたことが判明しました。

@Membership.GetUser().ProviderUserKey

これにより、システムは組み込みのメンバーシップシステムに基づいてデータベースを作成しようとしますが、これはシステムのセットアップ方法とは異なる場合があります。

于 2015-06-11T17:09:21.830 に答える
1

同様の問題が発生したのは、ユーザーインスタンスを起動できるSQLExpressユーティリティをダウンロードするだけでした。SSEUtilは、ユーザーインスタンスの問題のトラブルシューティングを支援するためにVisual Studioチームによって作成されたツールであり、ユーティリティとともにインストールされるreadmeファイルで詳細を読むことができます。 http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en

これがお役に立てば幸いです。

于 2016-03-30T12:29:19.343 に答える
1

私の場合、「任意のデータベースに接続する」という正しいパスを設定する必要がありました。

インスタンスで、に移動しSecurity、次にに移動しLoginsます。

そこを右クリックすると、が表示されproperties、をクリックする必要がありますSecurables

そこでは、任意のデータベースに接続する可能性があります。

于 2017-03-07T14:04:00.750 に答える