[c#] SQL 네트워크 인터페이스, 오류 : 50-로컬 데이터베이스 런타임 오류가 발생했습니다. 자동 인스턴스를 만들 수 없습니다.
폴더에 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의 주요 변경 사항 : 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
하고 있는지 문제를 해결합니다.
답변
이것을 실행 :
sqllocaldb create “v12.0”
cmd 프롬프트에서 나를 위해 이것을 해결했습니다 …
답변
나는 일반적 으로이 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>
답변
시작하려면-원인이 될 수있는 4 가지 문제가 있습니다. 일반적인 LocalDb SqlExpress Sql Server 연결 오류를 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
있습니다. 시작하기 전에 v11 또는 v12의 이름을 (localdb) \ mssqllocaldb로 변경해야합니다.
Possible Issues
- 실행중인 서비스 가 없습니다.
- 여기에 방화벽 포트가
구성 되어 있지 않습니다. - 귀하의 설치가 및 문제 / 손상 (도움 아래 단계는 당신에게 좋은 깨끗한 출발을)
- V11 또는 12의 이름을 mssqllocaldb로 변경 하지 않았습니다.
\\ 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"`
많은 문제 해결
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%';
답변
인스턴스가 손상되었거나 제대로 업데이트되지 않았을 수 있습니다.
다음 명령을 시도하십시오.
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.
답변
아마도이 오류는 version
SQL Server 때문에 발생했습니다.is not installed
connectionString="Data Source=(LocalDB)\v12.0;....
그리고 당신은 그것을 설치할 필요가 없습니다
빠른 수정 당신이 설치된 버전으로 변경하는 것입니다
제 경우에는에서 v12.0
로 변경합니다.MSSQLLocalDB
답변
이 문제에 대한 최종 해결책은 다음과 같습니다.
-
먼저 applicationHost 구성 파일을 변경하십시오. 아래 문자열 setProfileEnvironment = “false”를 setProfileEnvironment = “true”로 바꿉니다.
-
데이터베이스 연결 문자열에 아래 속성을 추가하십시오. 통합 보안 = SSPI