SQL 네트워크 인터페이스, 오류 : 50-로컬 데이터베이스 런타임 오류가 발생했습니다. 자동 인스턴스를 만들 수 없습니다.


80

폴더에 MyDatabase.mdf파일 이있는 ASP.NET MVC 5 웹 응용 프로그램을 빌드하려고 App_Data합니다. LocalDb인스턴스 와 함께 SQL Server 2014 Express가 설치되어 있습니다. 서버 탐색기를 사용하여 데이터베이스 테이블을 편집 할 수 있지만 응용 프로그램을 디버그하고 데이터베이스가 필요한 페이지로 이동하면 다음 오류가 발생합니다.

SQL Server에 대한 연결을 설정하는 동안 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스 할 수 없습니다. 인스턴스 이름이 올 바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오. (제공자 : SQL 네트워크 인터페이스, 오류 : 50-로컬 데이터베이스 런타임 오류가 발생했습니다. 자동 인스턴스를 만들 수 없습니다. 오류 세부 정보는 Windows 응용 프로그램 이벤트 로그를 참조하십시오.

그래서 아래의 이벤트 뷰어를 살펴 보았는데 Application경고 하나만 계속 해서 봤습니다 .

압축 된 콘텐츠 C : \ Users \ User1 \ AppData \ Local \ Temp \ iisexpress \ IIS Temporary Compressed Files \ Clr4IntegratedAppPool을 캐시하기 위해 지정된 디렉터리가 잘못되었습니다. 정적 압축이 비활성화됩니다.

그래서 서버 재부팅을 시도했지만 여전히 진행되지 않았습니다. 이전과 동일한 오류 50.

라는 클래스가 Models있는 곳에 클래스를 만들었습니다 Post.

namespace MyApplication.Models
{
    public class Post
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    }

    public class MyDatabase : DbContext
    {
        public DbSet<Post> Posts { get; set; }
    }
}

또한 Controller의 게시물을 나열 하는 설정이 있습니다 MyDatabase.

namespace MyApplication.Controllers
{
    public class PostsController : Controller
    {
        private MyDatabase db = new MyDatabase();

        // GET: Posts
        public ActionResult Index()
        {
            return View(db.Posts.ToList());
        }
    }

web.config파일에서 연결 문자열은 다음과 같습니다.

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

여기에 게시 된 제안을 시도했지만 작동하지 않았습니다. 또한 이것을 시도 했습니다 .

또한 응용 프로그램 실행을 시작한 후 MyDatabase 인스턴스의 연결이 끊어지는 것을 확인했습니다. Visual Studio에서 서버 탐색기를 사용하여 데이터베이스를 새로 고치면 테이블을 볼 수 있습니다.

Visual Studio 2013 내에서 데이터베이스에 연결하고 편집 할 수 있지만 응용 프로그램을 디버깅 할 때 데이터베이스에 연결할 수없는 이유는 무엇입니까?


시도해 보셨습니까 (localdb)\v11.0?
Arindam Nayak 2014 년

(localdb)\v11.0위와 같은 결과로 시도했습니다 .
Jonathan Kittell 2014 년

확실합니까? SQL Server (SQLEXPRESS)서비스가 실행 중입니다.
Arindam Nayak 2014 년

예, SQL Server 구성 관리자를 사용하여 확인할 때 SQLEXPRESS 인스턴스가 실행 중입니다
Jonathan Kittell 2014 년

당신이 관리 스튜디오를 사용하여 연결 할 수 있습니까, 기사가 - dyball.wordpress.com/2014/04/28/... 이 힘 도움말 ~
Arindam 나약

답변:


124

LocalDB의 주요 변경 사항 : SQL 2014에 적용됩니다 . 이 기사를 살펴보고 (localdb)\mssqllocaldb서버 이름으로 사용하여 LocalDB 자동 인스턴스에 연결해 보십시오 . 예를 들면 다음과 같습니다.

<connectionStrings>
  <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; 
  ...

이 기사에서는 2014 년 LocalDB에 연결하기 위해 2012 SSMS를 사용하는 방법도 언급합니다. 이로 인해 여러 버전의 SQL이 설치되어있을 수 있다고 믿습니다. 따라서이 SO 답변 을 지적하게됩니다. 향후 발생할 수있는 다른 버전 불일치 문제를 방지하기 위해 LocalDB "예"의 기본 이름을 변경 제안; 문제의 원인이 아니라 단일 개발 머신에 설치된 여러 SQL 버전이 발생할 수있는 잠재적 충돌에 대한 인식을 높이기 위해 ... 그리고 일부를 피하기 위해 습관적으로 만들어야합니다.

언급 할 또 다른 것은 가치 - 후 사용해보십시오 - 다시 설치, 제거 - 당신이 사용할 수없는 상태로 인스턴스를 입수 한 경우로 인해이 문제를 시도하고 해결하기 위해 그것으로 땜질로는, 그것은 가치가 처음부터 다시 수 있습니다 mssqllocaldb대신 값을 v12.0하고 있는지 문제를 해결합니다.


다른 솔루션은 나를 위해 작동하지 않습니다하십시오 때문에
아마드

40

이것을 실행 :

sqllocaldb create "v12.0"

cmd 프롬프트에서 나를 위해 이것을 해결했습니다 ...


2
이것은 실제로 무엇을합니까?
Simon_Weaver

1
이름이 "v12.0"인 로컬 SQL 데이터베이스를 만듭니다.
Falcon Momot 2016

4
이 문제를 해결하려고 노력하는 내 인생의 4 시간이이 명령을 통해 순식간에 해결됩니다. 지정된 이름과 버전으로 새 LocalDB 인스턴스를 만듭니다. [version-number] 매개 변수를 생략하면 기본값은 SqlLocalDB 빌드 버전입니다. -s는 생성 된 후 새 LocalDB 인스턴스를 시작합니다. 자세한 정보 : msdn.microsoft.com/en-us/library/hh247716.aspx
Exel Gamboa

참고로이 cmd 문을 실행 한 후 Web.config 파일의 connectionString Data Source = (LocalDb) \ V12.0; 데이터 소스 = (LocalDb) \ MSSQLLocalDB에서;
David Alan Condit 2018

이것은 나를 위해 그것을 해결하지만, VS의 수리 후, 나는 그것이 인스턴스의 생성 후에 필요한 생각 다시 시작 또는 모든 내 기계, 강제로 내 확장의 다시 설치
안토니 스콧

36

나는 일반적 으로이 msdn 블로그 게시물에 따라이 오류를 수정합니다. 전체 IIS와 함께 LocalDB 사용

이를 위해서는 일반적으로 C : \ Windows \ System32 \ inetsrv \ config에있는 applicationHost.config 파일을 편집해야합니다. KB 2547655의 지침에 따라 다음과 같이 응용 프로그램 풀 ASP.NET v4.0에 대해 두 플래그를 모두 활성화해야합니다.

<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0"     managedPipelineMode="Integrated">
    <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>

17
이 파일을 편집하려면 메모장과 같은 64 비트 텍스트 편집기를 사용해야합니다. Notepad ++와 같은 32 비트 파일을 사용하는 경우 SysWOW64에서 파일의 다른 사본을 자동으로 편집합니다. 내 인생의 시간은 돌아 오지 않을 것입니다.
Tyler

1
@Tyler 나는 이것을 지적 해 주셔서 감사합니다. 좀 더 일찍 당신의 의견을 읽었 으면 좋았을 텐데요. 모든 것을 바꾸는 데 3 일을 보냈습니다. 이것은 트릭을했다!
Pirate X

1
OMG! 고마워요 Tyler. 나는 똑같은 일로 고생했고 당신은 또 다른 2 시간을 낭비하지 않도록 나를 구했습니다!
130nk3r5


파일의 어디로 이동합니까 ??
Ciaran Gallagher

24

시작하려면-원인이 될 수있는 4 가지 문제가 있습니다. 일반적인 LocalDb SqlExpress Sql Server 연결 오류를 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred있습니다. 시작하기 전에 v11 또는 v12의 이름을 (localdb) \ mssqllocaldb로 변경해야합니다.

Possible Issues
 \\ rename the conn string from v12.0 to MSSQLLocalDB -like so-> 
 `<connectionStrings>
      <add name="ProductsContext" connectionString="Data Source= (localdb)\mssqllocaldb; 
      ...`

가장 간단한 방법은 아래 작업을 수행하는 것임을 알았습니다. 도움을 위해 사진과 단계를 첨부했습니다.

First verify which instance you have installed, 레지스트리를 확인하고 cmd를 실행하여이 작업을 수행 할 수 있습니다.

 1. `cmd> Sqllocaldb.exe i` 
 2. `cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"` 
if this step fails, you can delete with option `d` cmd> Sqllocaldb.exe d "someDb"
 3. `cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"` 
 4. `cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"`

SqlLOCALDb_edited.png


많은 문제 해결 Registry구성

요청 및 의견 에서 편집 1 : 다음은 레지스트리를 추적하기위한 일반 형식의 모든 버전에 대한 레지스트리 경로입니다.

경로

// SQL SERVER RECENT VERSIONS
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\(instance-name)

// OLD SQL SERVER
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
// SQL SERVER 6.0 and above.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive
// SQL SERVER 7.0 and above

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server 7
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServ65

수색

SELECT registry_key, value_name, value_data  
FROM sys.dm_server_registry  
WHERE registry_key LIKE N'%SQLAgent%';

또는 SSMS Sql Management Studio에서 실행하면 서버에있는 모든 설치의 전체 목록이 제공됩니다.

DECLARE     @SQL VARCHAR(MAX)
SET         @SQL = 'DECLARE @returnValue NVARCHAR(100)'
SELECT @SQL = @SQL + CHAR(13) + 'EXEC   master.dbo.xp_regread

 @rootkey      = N''HKEY_LOCAL_MACHINE'',
 @key          = N''SOFTWARE\Microsoft\Microsoft SQL Server\' + RegPath + '\MSSQLServer'',
 @value_name   = N''DefaultData'',
 @value        = @returnValue OUTPUT; 

 UPDATE #tempInstanceNames SET DefaultDataPath = @returnValue WHERE RegPath = ''' + RegPath + '''' + CHAR(13) FROM #tempInstanceNames 

 -- now, with these results, you can search the reg for the values inside reg
 EXEC (@SQL)
 SELECT      InstanceName, RegPath, DefaultDataPath
 FROM        #tempInstanceNames

문제 해결 Network구성

SELECT registry_key, value_name, value_data  
FROM sys.dm_server_registry  
WHERE registry_key LIKE N'%SuperSocketNetLib%';  

1
DB 제거 및 추가가 효과적이었습니다. MVC에서 VS Community 2017 및 MVA 과정 사용
Jeroen

어떤 레지스트리 키를보고 계십니까 ??
Adam Plocher

위 의 reg 그림 에서 @AdamPlocher는 corresponding software SQL server versions경우에 따라 고아가 될 수 있음을 알 수 있습니다. 따라서 설치를 다시 실행하기로 선택한 경우 해당 키가 제거되었는지 확인하고 다시 설치하는 것이 가장 좋습니다. 그것이 당신이 찾고있는 것이 아니라면 당신의 질문을 더 잘 이해하도록 도와 주시고 당신을 도울 것입니다. 나는이 문제 해결에 많은 시간을 보냈다
변압기

@Jeroen 내가 도울 수있어서 다행이다 :)
트랜스포머

@transformer 스크린 샷이나 답변에는 레지스트리에서 확인할 경로가 표시되지 않습니다. 스크린 샷은 레지스트리의 Microsoft SQL Server 키를 보여 주지만 상위 키가 무엇인지는 보여주지 않습니다. 귀하의 대답은 "먼저 설치 한 인스턴스를 확인하십시오. 레지스트리를 확인하여이를 수행 할 수 있습니다."라고 표시되지만 레지스트리에서 확인할 위치는 표시되지 않습니다. 어떤 레지스트리 경로입니까? 들으
아담 Plocher

13

인스턴스가 손상되었거나 제대로 업데이트되지 않았을 수 있습니다.

다음 명령을 시도하십시오.

C:\>sqllocaldb stop MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" stopped.
 
C:\>sqllocaldb delete MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" deleted.
 
C:\>sqllocaldb create MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.
 
C:\>sqllocaldb start MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" started.

이 조언은 @transformer가 제공 한 것을 복제하는 것 같습니다.
카이 우스 JARD

8

아마도이 오류는 versionSQL Server 때문에 발생했습니다.is not installed

connectionString="Data Source=(LocalDB)\v12.0;....

그리고 당신은 그것을 설치할 필요가 없습니다

빠른 수정 당신이 설치된 버전으로 변경하는 것입니다

제 경우에는에서 v12.0로 변경합니다.MSSQLLocalDB


내 경우에는 MssqllocalDb를 사용하여 문제가 발생하지만 오류가 표시됩니다. /
Ahmad

4

이 문제에 대한 최종 해결책은 다음과 같습니다.

  1. 먼저 applicationHost 구성 파일을 변경하십시오. 아래 문자열 setProfileEnvironment = "false"를 setProfileEnvironment = "true"로 바꿉니다.

  2. 데이터베이스 연결 문자열에 아래 속성을 추가하십시오. 통합 보안 = SSPI


ApplicationHost 경로 : C : \ Windows \ System32 \ inetsrv \ config \ applicationHost.config. 이 게시물은 나에게 분명해졌습니다. social.msdn.microsoft.com/Forums/vstudio/en-US/…
Mamdouh

3

나는 같은 문제에 부딪쳤다. 내 수정은 "app.config"파일로 변경 <parameter value="v12.0" /> 되었습니다 <parameter value="mssqllocaldb" />.


3

모두 타일러가 말한 것을 적어 두십시오.

이 파일을 편집하려면 메모장과 같은 64 비트 텍스트 편집기를 사용해야합니다. Notepad ++와 같은 32 비트를 사용하는 경우 SysWOW64에서 파일의 다른 사본을 자동으로 편집합니다. 내 인생의 시간은 돌아 오지 않을거야


2

제 경우에는 하나의 솔루션에 여러 프로젝트가 있었고 코드 우선 마이그레이션으로 "Update-Database"명령을 실행할 때 패키지 관리자 콘솔에서와 다른 시작 프로젝트를 선택했습니다. 적절한 시작 프로젝트를 선택했는지 확인하십시오.


2

위의 문제를 해결했습니다 아래 단계 적용

여기에 이미지 설명 입력

그리고 이러한 변경을 수행 한 후 web.config에서 다음 변경을 수행하십시오.

 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=|DataDirectory|\aspnet-Real-Time-Commenting-20170927122714.mdf;Initial Catalog=aspnet-Real-Time-Commenting-20170927122714;Integrated Security=true" providerName="System.Data.SqlClient" />

연결 문자열도 확인하십시오.
Sagar Shinde

0

내 문제는 여러 버전의 MS SQL Express가 설치되어 있다는 것입니다. 설치 폴더 C : / ProgramFiles / MicrosoftSQL Server /로 이동하여 3 개 버전을 찾았습니다. 2 개의 폴더를 삭제하고 문제를 해결 한 MSSQL13.SQLEXPRESS 만 남겼습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.