2017-11-14 1 views
1

내 프로그램 용으로이 업데이트 도구가 있습니다. 이 도구는이 코드 (vb 및 sql)로 SQL Server 데이터베이스를 업데이트합니다.RESTORE SQL Server의 c : users directories에있는 .bak 파일

Dim sql As Process = Process.Start("sqlcmd.exe", Param + " -i update.sql -o log.txt") 

Param는 다른 사람의 사이 .bak 파일 myprogram_update.bak의 이름을 포함합니다.

RESTORE DATABASE [myprogram_tmp] 
FROM DISK = N'$(db_src)' 
WITH FILE = 1, 
MOVE N'myprogram_tmp' TO @mdf, 
MOVE N'myprogram_tmp_log' TO @ldf, 
NOUNLOAD, STATS = 5 

@mdf@ldf

update.sql 시작은 SQL 서버 설정에서 읽어 표준 경로입니다.

업데이트 도구는 고객에게 제공되며 일반적으로 SQL Server는 Desktop 또는 Downloads과 같은 Windows 사용자 디렉터리에서 읽을 수 없습니다. 그러나 많은 고객이 아카이브를 압축 해제 한 다음이 오류가 발생합니다.

myprogram_update.bak/access denied에 액세스 할 수 없습니다.

모든 고객 서버의 설정을 변경할 수 없으므로이 디렉토리에서 사용할 수있는 방법이 있습니까? 내 생각 중 하나는 먼저 설정을 실행하고 program files에 압축을 푼 것이지만 더 똑똑한 해결책이 될 수 있습니다.

편집 : 도구가 관리자 모드로 실행됩니다.

+1

는 DACPAC 또는 BACPAC으로 변경 및/또는 초기 데이터베이스를 발송 고려하십시오. SQL Server 자체에 대한 사용 권한 만 있으면 배포 할 수 있습니다. 제한된 양의 데이터 만이 방식으로 지원되지만 스크립트 복원보다 편리합니다 (DACPAC 배포를 프로그래밍 방식으로 호출하는 것은 DacFx를 통해 지원됩니다). 데이터베이스 프로젝트는 일반적으로 버전 관리를 완벽하게 지원하므로 큰 이점이 있습니다. –

답변

0

당신은 고도를 요청하고 관리자 계정으로 실행해야합니다, 어쩌면이 도움이 될 것입니다

http://www.downloadinformer.com/how-to-make-a-vb-net-application-always-run-in-administrator-mode/

+0

응용 프로그램은 항상 관리자 모드로 항상 실행됩니다. 업데이트 자체는 잘 작동하며, SQL 부분도 UPDATE 또는 ALTER로 작동합니다. 그러나'RESTORE'는'Desktop'에서 실패하지만'c : \ temp'에서 작동합니다. – user1673665

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/17943703) –

+0

아니요,이 방법은 도움이되지 않습니다. 관리자도 원격 SQL Server 컴퓨터에서 로컬 사용자의 디스크 드라이브에 액세스 할 수 없습니다. –

관련 문제