SQL Server localDB를 최신 버전으로 업그레이드하려면 어떻게 해야 합니까?
2012년부터 2014년까지 SqlServer localDB를 업그레이드할 수 있습니까?
현재 SQL Server 2012 버전 11을 사용하고 있습니다.SQL Server 2014에서 버전 12로 업그레이드해야 합니다.
테이블과 데이터를 잃지 않고 할 수 있으면 좋겠습니다.
로컬 DB를 새로 설치했는데 데이터가 없습니다.다른 이름도 있고 팀 프로젝트라 구성 파일을 제대로 바꿀 수가 없습니다.
명령줄 sqlLocalDB 도구를 사용하여 v11.0이라는 2014년 버전을 생성하려고 했지만 어쨌든 이전 2012년 버전에서 생성되었습니다.
C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create v11.0
LocalDB instance "v11.0" created with version 11.0.3000.0.
C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create v12.0
LocalDB instance "v12.0" created with version 12.0.2000.8.
C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create aaaaa
LocalDB instance "aaaaa" created with version 12.0.2000.8.
v11.0으로 명명하면 사용된 버전이 변경되는 이유는 무엇입니까?
기존 v11.0을 업그레이드하려면 어떻게 해야 합니까?
업데이트:
는 비주얼 스튜디오 2022 는됩니다와 됩니다.Microsoft SQL Server 2019 15.0.4153.1 LocalDB
이 있는 할 수 . Visual Studio 2022 의 Visual Studio 를.sqllocaldb versions
업그레이드할 수 있습니다.
원본:
도 Visual Studio 2019 와 에 이렇게 .Microsoft SQL Server 2016 (13.1.4001.0) LocalDB
.
저는 추가하려고 했기 때문에 할 필요가 있었습니다.Temporal tables
계단식 삭제로 실패했습니다.
DbCommand(31ms) [Parameters=[], 명령 실행 실패입력 = 'Text', CommandTimeout= '30'] ALTERTABLE Text SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History)를 입력합니다.본문));
'프로젝트' 테이블 때문에 SYSTEM_VERSIONING을 ON으로 설정하지 못했습니다.Repository.dbo.텍스트'에는 계단식 DELETE 또는 UPDATE가 포함된 FORENT KEY가 있습니다.
이 오류는 SQL Server 2016에만 영향을 미치며 2017년 이후에는 영향을 미치지 않는 것으로 나타났습니다.
ON DELETE CASCADE 및 ON UPDATE CASCADE는 현재 테이블에서 허용되지 않습니다.즉, temporal table이 외부 키 관계에서 테이블을 참조하고 있을 때(sys에서 parent_object_id에 해당).foreign_keys) CASCADE 옵션은 허용되지 않습니다.이 제한을 해결하려면 응용 프로그램 로직을 사용하거나 트리거 후에 기본 키 테이블(sys의 reference_object_id에 해당)에서 삭제 시 일관성을 유지합니다.foreign_keys).기본 키 테이블이 시간적이고 참조 테이블이 비시간적인 경우에는 이러한 제한이 없습니다.
이 제한은 SQL Server 2016에만 적용됩니다.CASCADE 옵션은 CTP 2.0부터 SQL Database 및 SQL Server 2017에서 지원됩니다.
https://stackoverflow.com/a/54591579/3850405
DB 에 하면 현재 에 대한 를 얻을 수.sqllocaldb info
파워셸에서.
이것은 꽤 좋은 업그레이드 가이드이지만 저는 약간 다른 것을 선택합니다.
https://medium.com/cloudnimble/upgrade-visual-studio-2019s-localdb-to-sql-2019-da9da71c8ed6
다운로드.SQL Server Express 2019 LocalDB
아니면 더 새로운 것으로, exe를 실행합니다.
미디어 다운로드 선택:
로컬 DB:
다운로드한 exe에서 설치:
이 후에 컴퓨터를 다시 시작해 보는 것이 좋습니다만 필요한지 잘 모르겠습니다.어쨌든 했습니다.
sqllocaldb versions
했습니다.Windows API call "RegGetValueW" returned error code: 0.
나를 위해.
다음 답변을 사용하여 해결했습니다.
https://stackoverflow.com/a/58275480/3850405
.Registry Editor
regedit)다가 하지 않는 와 같습니다.
폴더 이름을 변경한 후 모든 작업이 작동합니다.
이 후 현재 localdb에 있는 데이터베이스를 백업합니다.현재 로컬 db의 모든 데이터베이스를 나중에 새 버전에 연결하기 때문에 이 작업은 필요하지 않을 수도 있지만 중요한 데이터가 있는 경우 이 작업을 권장합니다.
저는 표준 이름을 가지고 있습니다.MSSQLLocalDB
Visual Studio의 예를 들어보겠습니다.할 수 전에 ssqllocaldb info
명령을 실행하면 현재 버전을 볼 수 있습니다.
파워셸에서 다음 세 가지 명령을 실행합니다.
sqllocaldb stop mssqllocaldb
sqllocaldb delete mssqllocaldb
sqllocaldb create MSSQLLocalDB
것이 은 와 .LocalDB instance "mssqllocaldb" created with version 15.0.2000.5.
그런 SSMS 를 LocalDB 합니다를 새합니다.(localdb)\mssqllocaldb
또는 유사한 프로그램과 이전 데이터베이스를 첨부합니다.됩니다.%UserProfile%
폴더.
이제 로컬 DB가 업데이트되고 모든 데이터베이스가 정상적으로 작동하기를 바랍니다.
MSDN의 이 링크에 나와 있듯이(너무 잘 선택되지 않은 제목...) 변환은 .mdf 파일을 두 번 클릭하기만 하면 트리거됩니다.제 경우에는 이런 일이 발생하지 않았습니다. (이를 위해 Sql Server Management Studio 소프트웨어 등이 필요했기 때문일 수도 있습니다.)
다음은 대체 절차입니다.
Visual Studio에서 "서버 탐색기" 열기
왼쪽 상단 모서리에 있는 "데이터베이스에 연결" 아이콘 클릭
목록에서 "Microsoft SQL Server"를 선택하고 다음을 누릅니다.
서버 이름으로 쓰기: (LocalDB)\MSSQL로컬DB
아래 옵션에서 "데이터베이스 파일 첨부"를 선택하고 .mdf 파일에 브라우저를 엽니다.
계속 진행하면 변환 트리거 여부를 묻는 대화 상자가 표시됩니다.
그리고 이것이 마지막입니다.아주 직관적이지는 않지만 효과적입니다.이전에 언급한 te link 외에 다른 문서를 찾지 못했습니다. 다른 단계들은 모두 순수한 직관이었지만 저에게 효과가 있었습니다. 당신에게도 도움이 되었으면 합니다.
LocalDb의 특정 버전을 대상으로 하려면 12.0 또는 11.0을 매개 변수로 사용합니다.예를 들어 다음과 같습니다.
sqllocaldb create "mydb" 12.0
명령이 실패한 이유는 버전을 잘못 참조하고 있기 때문입니다.-? 정보에 이 모든 것이 너무 명확하지는 않습니다.
첫 번째 매개 변수로 "v12.0"을 사용하면 인스턴스 이름을 설정할 수 있습니다.두 번째 버전 매개 변수가 지정되지 않으면 기본 버전이 사용됩니다.
SQL Server LocalDb 인스턴스를 업그레이드하는 간단한 방법은 인스턴스 데이터 디렉토리를 에서 삭제하는 것입니다.%LocalAppData%\Microsoft\Microsoft SQL Server Local DB\Instances\
디렉토리 입니다.인스턴스를 다음에 사용하면 설치된 최신 버전으로 다시 생성됩니다.
는 것 같습니다.v11.0
는 LocalDB 2012 자동 인스턴스의 특별한 이름입니다.그리고 이 버전과 엄격하게 연결되어 있습니다.2014년 버전과 2016년 버전이 동일한 경우MSSQLLocalDB
그런 목적으로 이름을 짓습니다.
저도 추가하고 싶습니다.@Ogglas
소프트웨어에서 자동으로 마이그레이션하려면 다음 단계를 따를 수 있습니다.
업그레이드할 때 다음 단계를 수행합니다(업그레이드 단계 또는 업그레이드 코드).
- DB의 현재 물리적 경로를 읽습니다.
use {dbName}; SELECT physical_name FROM sys.database_files WHERE name = '{dbName}'
- SQLLocalApi 유틸리티 클래스를 통해 또는 를 실행하여 DB의 현재 SQL 버전을 확인합니다.
sqllocaldb i your_db
별도의 프로세스로 또는 다음과 유사한 방법으로:
DECLARE @dbversion nvarchar(128)
SET @dbversion = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @dbversion = SUBSTRING(@dbversion, 1, CHARINDEX('.', @dbversion) - 1)
SELECT @dbversion -- this will give you the major version (eg. 12 or whatever is your old version)
...
- 원래 답변 실행에 제시된 대로(또는 사용자 지정 DB 이름으로)
sqllocaldb stop mssqllocaldb
sqllocaldb delete mssqllocaldb
sqllocaldb create MSSQLLocalDB
- 2단계의 @dbversion이 이전 버전인 경우(예: SQL LocalDB 2014의 경우 12) 1단계에서 기록된 물리적 경로를 사용하여 DB를 다시 연결합니다.
CREATE DATABASE [{dbName}]
ON PRIMARY (NAME={dbName}, FILENAME = '{dbPath}')
for attach;
- 옵션: DB의 호환성 수준을 업그레이드합니다(MDF를 다시 연결하면 이전 호환성 수준이 유지됩니다).
EXEC('ALTER DATABASE {db_name} SET COMPATIBILITY_LEVEL = 150'); -- or whatever version you are upgrading to
언급URL : https://stackoverflow.com/questions/26897152/how-do-i-upgrade-sql-server-localdb-to-a-newer-version
'programing' 카테고리의 다른 글
문자열을 포인터 또는 리터럴로 전달할 때 strcmp() 반환 값이 일치하지 않음 (0) | 2023.09.23 |
---|---|
libavcodec을 이용한 mPEGts 컨테이너의 원시 H264 프레임 (0) | 2023.09.23 |
Oracle에서 문자열을 숫자로 선택 (0) | 2023.09.23 |
도커 컨테이너 이미지가 이렇게 큰 이유는 무엇입니까? (0) | 2023.09.23 |
Powershell을 사용하여 SQL Server 버전을 확인하려면 어떻게 해야 합니까? (0) | 2023.09.18 |