programing

파일 ....database1.mdf에 대해 자동 이름이 지정된 데이터베이스를 연결하지 못했습니다.

telecom 2023. 5. 15. 21:15
반응형

파일 ....database1.mdf에 대해 자동 이름이 지정된 데이터베이스를 연결하지 못했습니다.

Visual Studio 2010 웹 사이트를 디버깅하는 동안 다음 오류가 발생합니다.

파일 C에 대한 자동 이름 데이터베이스 첨부 시도:\사용자...\Desktop\Dpp2012New\App_Data\dppdata.mdf에 실패했습니다.동일한 이름의 데이터베이스가 존재하거나, 지정한 파일을 열 수 없거나, UNC 공유에 있습니다.

설명:현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다.오류에 대한 자세한 내용과 코드에서 발생한 오류에 대한 자세한 내용은 스택 추적을 검토하십시오.

예외 세부 정보:시스템.Data.SqlClient.SqlException:파일 C에 대한 자동 이름 데이터베이스 첨부 시도:\사용자...\Desktop\Dpp2012New\App_Data\dppdata.mdf에 실패했습니다.동일한 이름의 데이터베이스가 존재하거나, 지정한 파일을 열 수 없거나, UNC 공유에 있습니다.

여기 내 연결 문자열이 있습니다.web.config:

<connectionStrings>
    <add name="ApplicationServices" 
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
         providerName="System.Data.SqlClient"/>
    <add name="ConnectionString" 
         connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\dppdatabase.mdf;Integrated Security=SSPI" 
         providerName="System.Data.SqlClient"/>
</connectionStrings>

그리고 저는 제 웹사이트에서 다음과 같이 접속합니다.

Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

스택 추적에는 다음과 같은 오류 라인이 표시됩니다.

 Dim conn As New SqlConnection(connectionString)
 Dim dr As SqlDataReader
 conn.Open() 'This is the error line as per stacktrace

위 폴더에 필요한 권한을 부여하여 "또는 지정된 파일을 열 수 없음" 문제가 될 수 없습니다.이 포럼에서 동일한 오류와 관련된 모든 게시물을 살펴보면 이 오류의 심각성을 분명히 알 수 있습니다.하지만, 어떤 해결책도 제 문제를 해결하지 못합니다.제가 시도한 리소스 중 일부는 다음과 같습니다.

  1. http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx
  2. http://blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-file.aspx
  3. http://forums.asp.net/t/1033225.aspx

저는 해결책을 간절히 기다리고 있습니다.

저도 이런 문제가 있었고 고통스러웠습니다.연결 문자열을 구성하여 문제를 해결했습니다.연결 문자열에서 AttachDbFilename 속성의 값 |DataDirectory|\dbfilename.mdf를 파일의 경로로 바꿉니다.|DataDirectory|는 데이터베이스 파일이 동일한 프로젝트 내 App_Data 폴더에 있는 경우에만 사용할 수 있습니다.

그래서 AttachDbFilename 속성을 mdf 파일의 직접 경로로 변경하여 문제를 해결했습니다.

AttachDbFilename=C:\MyApp\App\DAL\db.mdf

이것이 당신에게 효과가 있기를 바랍니다.

다음과 같이 연결 문자열을 만드십시오.

 <add name="ECommerce" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=C:\USERS\dL\DESKTOP\DATABASE\MYSHOP.MDF;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient"/>

저한테 효과가 있어요.

<add name="Connections" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>

유사한 오류가 발생했지만 구성 파일이 아닌 코드로 구성된 연결을 사용했습니다.솔루션은 "Initial Catalog=My Database" 부분을 추가하는 것이었습니다.내 코드는 이제...

DbConnection connection = new SqlConnection(String.Format(@"Data Source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDbFilename={0}; User Instance=True; Initial Catalog=IPDatabase;", Location));

위치는 아직 존재할 필요가 없는 mdb 파일의 전체 경로입니다.

에서 웹 앱을 개발할 때 가장 성가신 오류 중 하나입니다.넷. 1년 전에 제가 하고 있던 프로젝트에서 이 문제가 있었습니다.저는 sa 계정으로 SQL Management Studio에 로그인하여 개체 탐색기에 데이터베이스를 연결했습니다(Databases -> Right Click -> Attach).그런 다음 Security->Logins->[myWindowsUsername]을 열고 User Mappings 탭을 편집하여 첨부된 데이터베이스에 대한 dbowner 권한을 부여했습니다.

Management Studio나 콘솔 명령 없이도 이러한 작업을 수행할 수 있을 것입니다. 하지만 저는 T-SQL을 잘 다루지 못해 조언을 드릴 수 없습니다.

제 프로젝트는 EF 코드 우선 프로젝트였고 파일이 삭제되면 나타납니다. 중입니다.Update-Database패키지 관리자 콘솔에서 DB와 해당 DB를 정상으로 만듭니다.

는 오가발이유입니다.AttachDbFilename매개 변수가 잘못된 파일 위치를 가리키는 절대 경로로 설정되었습니다.

데이터베이스 .mdf 파일 자체가 기본적으로 모든 빌드의 빌드 대상 폴더에 복사되거나 구성된 경우Copy if newer에만 Property 을 사용하는 .Copy if newer모든 빌드에서 데이터베이스를 덮어쓰는 것을 방지합니다.

, 문를해려면하결제,,AttachDbFilename매개 변수는 현재 실행 폴더를 가리켜야 합니다. Studio 변수 Visual 를 사용하는 것이 가장 |DataDirectory|상대 경로를 정의합니다.

고정 연결 문자열은 다음과 같습니다.

"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;Asynchronous Processing=True;User Instance=False;Context Connection=False"

웹 구성 파일을 확인하십시오. 이름이 같은 연결 문자열이 둘 이상 있을 수 있습니다.

연결 문자열의 데이터베이스 경로를 확인하십시오.동일한 오류 메시지가 표시되고 나중에 해당 문제가 철자가 틀린 경로라는 것을 알게 되었습니다.

애플리케이션에서 mdf 휴대성을 시도해왔기 때문에

    public DbContext IoDatabase()
    {
        var directory = System.IO.Directory.GetCurrentDirectory();
        var connectionString = @"Data Source=(localdb)\mssqllocaldb;AttachDbFilename=" + directory + "\\App_Data\\ITIS.mdf;Integrated Security=True;Connect Timeout=30;";
       return  new NerdDinners(connectionString);
    }

nerdDinners와 함께, 나는 그것을 어디서 찾았는지 기억할 수 없습니다, 존재합니다.

public class NerdDinners : DbContext
{
    public NerdDinners(string connString)
    {
        Database.Connection.ConnectionString = connString;
    }
}

그러면 반환 유형을 DbContext로 사용할 수 있습니다.

제가 주로 마주친 것은 GetCurrentDirectory()가 프로젝트 파일 경로가 아닌 컴파일된 파일 경로를 가져오기 때문에 배포를 GetCurrentDirectory로 설정해야 하며 mdf는 실제 App_Data를 참조하는 것이 아니라 컴파일 시 복사해야 한다는 것입니다.프로젝트에 mdf를 포함하고 속성으로 이동합니다.출력 디렉터리에 복사본을 설정합니다.

저도 EF와 같은 문제가 있었습니다.절대 경로 솔루션이 작동했습니다.그러나 프로그램을 새 위치로 이동하려는 경우에는 좋은 해결책이 아닙니다.나에게 이것은 문제였습니다.

  1. VS가 디버그 폴더에서 mdf 파일을 검색합니다.
  2. 이 ..mdf폴더에 , 때때로 는 두 합니다. VS는 두 파일을 동기화합니다.
  3. 인지 어떤이그는유로그▁for는유..mdf파일이 디버그에 동기화되지 않았습니다.

해결 방법:

  1. 를 합니다..mdf그리고..ldf 폴더로 보내기
  2. vs/server 탐색기에서 연결합니다.
  3. ADO를 추가할 때.NET 새 연결 사용
  4. VS는 다음을 복사할 것을 제안합니다..mdf폴더에 한 후 수락합니다. 수락합니다.
  5. 이제더더..mdf.
  6. 임시 폴더에 대한 연결을 삭제하고 프로젝트 폴더에 대한 연결을 새로 만들기

새 위치로 경로를 변경하기만 하면 됩니다.

당신은 어떻게 길을 얻을 것입니까?

데이터베이스 > 오른쪽 클릭 > 오른쪽 패널 데이터 소스가 있는 속성 >으로 이동하여 해당 데이터 소스 위치를 복사하고 web.config 파일로 업데이트합니다(데이터베이스에서 AttachDbFilename에서 확인해야 하는 유일한 경로).

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=E:\manish_data\project_practice\sqlbasedprojects\sqlbasedproject\realease\mainproject\App_Data\cruddatabase.mdf;

저도 같은 오류가 발생하여 다음을 수정했습니다(Visual Studio 2019 사용).디버그 > [프로젝트명] 디버그 속성을 클릭하여 좌측 사이드바에서 빌드 항목을 선택합니다.오른쪽 사이드바에서 출력 경로 항목으로 이동하고 bin\debug를 .\로 변경합니다.

이것을 변경한 후에 오류가 수정되었습니다.

ConfigurationManager.ConnectionStrings[0].ConnectionString

여기까지

ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString

앱을 설치하는 동안 설치 폴더를 프로그램 파일에서 C 디렉터리로 변경했습니다.그러면 나의 문제는 해결됩니다.

이유는 데이터베이스 디렉토리에 동일한 이름의 .mdf 파일이 포함되어 있기 때문이라고 생각합니다.따라서 AttachDbFilename을 대체할 수 있는 전체 경로를 지정하는 것이 가장 좋습니다.데이터베이스 파일의 전체 경로를 가져와서 app.config 파일에 있는 AttachDbFilename에 할당하기만 하면 됩니다.

대부분의 경우 단위 테스트 프로젝트는 본 프로젝트와 분리됩니다.따라서 db가 솔루션의 로컬인 경우 app_data 폴더를 찾지 못하므로 생성된 연결 문자열이 유효하지 않습니다.

유닛 테스트 프로젝트에서 DB에 연결해야 하는 경우 |DataDirectory|를 기본 프로젝트의 DB에 대한 상대 경로로 바꾸기만 하면 됩니다.

제가 지금까지 문제를 해결하기 위해 찾은 것은 아래와 같은 방법으로 mdf 파일을 만든다면 비주얼 스튜디오에서 잘 작동할 것입니다.

서버 탐색기->연결 추가->Microsoft SQL Server 데이터베이스 파일을 선택하고 데이터베이스 이름을 선택한 후 확인을 선택합니다.그러면 이 확률은 발생하지 않습니다.동영상 팔로우: 유튜브 링크

여기에는 많은 원인이 있는 것 같습니다.여기 내 것이 있었습니다.

단서는 오류 메시지의 마지막 줄에 있었습니다...

시스템. 데이터.SqlClient.SqlException: '파일 Q:\Folder\에 대해 자동 이름 데이터베이스를 연결하려고 했습니다.FileName.mdf가 실패했습니다.같은 이름의 데이터베이스가 존재하거나, 지정한 파일을 열 수 없거나, UNC 공유에 있습니다.'

...or it is located on UNC share.

운영 환경을 복제하려고 할 때...저는 원래 물리적 드라이브 Q:를 가지고 있었습니다.내 개발 기계가 망가진 후에..매핑된 드라이브를 다시 빌드하고 방금 만들었습니다.이 오류가 발생하기 시작했습니다...그런 다음 다시 돌아가서 다른 Q: 파티션을 만들면 문제가 해결됩니다.

같은 프로젝트 내의 폴더로 DB를 이동한 후에도 비슷한 문제가 발생했습니다.

마지막으로 제가 해야 할 일은 데이터베이스의 속성으로 이동하여 'dll' 아래에 나열된 경로를 복사하고 경로를 'AttachDbFilename='로 바꾸는 것이었습니다.

잘 작동했습니다.

이것 좀 먹어봐요, 저한테 효과가 있어요.

try {
    String ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\App_Data\Test.mdf;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True";
    SqlConnection connection = new SqlConnection(ConnectionString);
    connection.Open();
    MessageBox.Show("Connection is opened.!!");
    connection.Close();
} catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

TLDR: App.config 및 Settings와 같은 여러 파일에서 HasanG가 언급한 대로 변경해야 할 수 있습니다.저 같은 경우에는 디자이너.

HassanG의 답변에 추가하기 위해 ConnectionString의 경로를 변경해야 하는 위치가 여러 개 있을 수 있습니다.저의 경우, 디버거를 두 번 실행하고 설정에 정의된 연결 문자열을 변경하는 동안 데이터 지속성을 얻지 못했습니다.디자이너 파일이 이 문제를 해결했습니다.그러나 Visual Studio를 닫았다가 다시 열고 디버거를 다시 실행한 후 Visual Studio를 닫은 후 지속성이 나타나지 않았습니다.DataGridView가 비어 있거나 빌드 시 다음과 같은 오류가 발생할 수 있습니다.

*An attempt to attach an auto-named database for file <database file path in debug folder> failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.*

그런 다음 전체 프로젝트 솔루션에서 해당 파일 경로의 인스턴스를 검색하여 App.config 파일에서도 사용되고 있음을 발견했습니다.설정뿐만 아니라 파일의 경로도 변경했습니다.디자이너 파일 저는 여러 번의 디버거 실행과 여러 번의 Visual Studio 자체 실행 간에 DataGridView에서 데이터 지속성을 가질 수 있었습니다.이것이 누군가에게 도움이 되기를 바랍니다!저는 이것 위에 머리카락을 많이 뽑았습니다.

편집: 설정이라는 세 개의 파일을 만듭니다.설정 파일도 업데이트해야 했습니다.

Data 폴더에 Db.mdf 파일을 생성하기 위한 .net core 5:

  • appsettings.json의 연결 문자열:

"기본 연결": "데이터 원본=(LocalDB)\"\MSSQLlocalDB;AttachDbFilename=projectPath\Data\Db.mdf;통합 보안=참, 연결 시간 초과=30"

  • 옵션들.startup.cs 에서 SqlServer 사용:

    var projectPath = 디렉토리입니다.GetCurrent Directory();

    서비스AddDbContext(옵션 = > 옵션).SqlServer( 구성)를 사용합니다.GetConnectionString("DefaultConnection")입니다.바꾸기("projectPath", projectPath));

저도 같은 문제가 있었고, 아마 out.in 에서 연결 문자열이 다음과 같은 것을 확인했다고 생각합니다.

<connectionStrings>
  <add name="ApplicationServices"
    connectionString="data source=.\SQLEXPRESS;
                      Integrated Security=SSPI;
                      AttachDBFilename=|DataDirectory|\aspnetdb.mdf;
                      User Instance=true"
    providerName="System.Data.SqlClient" />
  <add 
    name="NorthwindConnectionString1" 
    connectionString="Data Source=localhost;
                      Initial Catalog=Northwind;
                      Integrated Security=True" 
    providerName="System.Data.SqlClient" />
</connectionStrings> 

자, 첫 번째.

<add 
  name="ApplicationServices" 
  connectionString="data source=.\SQLEXPRESS;
                    Integrated Security=SSPI;
                    AttachDBFilename=|DataDirectory|\aspnetdb.mdf;
                    User Instance=true"
  providerName="System.Data.SqlClient" />

는 기본적으로 web.config에 표시됩니다.변경하지 않고 다른 연결 문자열 추가

 <add
   name="NorthwindConnectionString1" 
   connectionString="Data Source=localhost;
                     Initial Catalog=Northwind;
                     Integrated Security=True"
   providerName="System.Data.SqlClient" />

파라미터를 사용합니다.이건 저한테 효과가 있어요.도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/12566036/an-attempt-to-attach-an-auto-named-database-for-file-database1-mdf-failed

반응형