Visual Studio 데이터베이스 에디션에는 다른 사람이 빌드시 데이터베이스 프로젝트에서 생성 한 .dbschema 파일을 데이터베이스에 배포 할 수 있도록 해주는 vsdbcmd.exe 도구가 함께 제공됩니다. 는 SQL :데이터베이스 배포 (vsdbcmd.exe) : DatabaseName 및 DefaultDataPath가 무시됩니까?
나는 그것이 다른 데이터베이스 서버에 스크립트를 배포 할 수 있다는 기대vsdbcmd.exe/A : 배포/CS/DSP "; 진정한 통합 보안 = 풀링 = 거짓 = (로컬) 데이터 소스"그것은 먼저 그것을 실행하는 스크립트를 작성하여이를 수행/일 /model:"..\Database.dbschema "/ P : 경우 TargetDatabase = TargetDB /manifest:"..\Database.deploymanifest"
문제없이. 그러나 실제 .mdf 파일의 전체 경로는 원래 databse에 대한 다른 참조와 함께 스크립트에 인코딩됩니다. 이것을 제어하는 옵션이 없거나 찾을 수 없습니다.
누구든지 사용하고 있습니까? 어떻게 배포합니까? 나는 다른 종류의 데이터베이스 프로젝트를 사용해야 할 것인가? (나는 "데이터베이스 프로젝트"와 "서버 프로젝트"사이의 선택 방법을 기억하고있다.
편집
난 그냥 벌금 .sqlcmdvars를 오버라이드 (override) 할 수 있지만,이 문제가 해결되지 않습니다. 위의 명령을 사용하여 생성 된 .sql 파일에서 추출한 것입니다.
GO
:setvar DatabaseName "TargetDB"
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\"
따라서 "targetdb"대상 데이터베이스가 올바르게 기록됩니다. 그러나, 더 몇 줄 :
Original.mdf 원래 데이터베이스의 이름입니다 (우리가 개발하는 동안 배포, 즉 dB, 그리고이 데이터베이스 프로젝트의 프로젝트 속성에서 설정)CREATE DATABASE [$(DatabaseName)]
ON
PRIMARY(NAME = [Original], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original.mdf', SIZE = 3072 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
LOG ON (NAME = [Original_log], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original_log.ldf', SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %)
. 여기서 db는 이미 존재하기 때문에 대상 컴퓨터 나 컴퓨터에서 정확한 경로가 다를 수 있기 때문에 배포가 실패하는 곳입니다.
이 값은 생성 된 스크립트에서 하드 코드 된 것처럼 보입니다.
차가움. 나는 그것이 일했을 것이라고 믿었지만 그것을 확인하지 않았기 때문에 당신의 대답을 받아 들일 것입니다. - 이후로 작업을 옮겼습니다 :) –
같은 문제가 있지만이 디렉토리에 파일이 없습니다. –