나는 이것이 어떻게 행해질 수 있는지 알았다.
먼저 당신은 당신이 모든 일을 할 것입니다 저장 프로 시저를 정의 할 필요가 xp_cmdshell을 유틸리티를
RAISERROR ('Enabling xp_cmdshell utility...', 0, 1) WITH NOWAIT
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO
다음을 활성화해야합니다. 그것은 임시 테이블에 모든 파일을 읽는 과정에 그 기능이 작동하고 당신이 지금해야 할 일은 당신은 전체 경로를 통과해야 (이 저장 프로 시저를 호출한다
CREATE PROCEDURE [Builder].[RunScriptsInFolder]
@scriptsDir varchar(255)
AS
IF len(@scriptsDir) = 0
RETURN 0
DECLARE @Message VARCHAR(254)
SET @Message = 'Loading files in ' + @scriptsDir + ' directory...'
RAISERROR (@Message, 0, 1) WITH NOWAIT
DECLARE @FileList Table (FileNumber int identity(1,1), FileName varchar(255), Command varchar(2048))
DECLARE @OutputTable Table (Output varchar(MAX))
DECLARE @FileName varchar(255)
DECLARE @Command varchar(2048)
DECLARE @FileNum int
DECLARE @databaseName varchar(255)
SET @databaseName = db_name()
SET @Command = 'DIR /B /O:-N ' + @scriptsDir + '*.sql'
INSERT INTO @FileList (FileName) EXEC xp_cmdshell @Command
UPDATE @FileList SET Command = 'sqlcmd -d ' + @databaseName + ' -i "' + @scriptsDir + FileName + '"'
WHILE EXISTS(SELECT * FROM @FileList)
BEGIN
SELECT TOP(1) @FileNum = FileNumber, @FileName = FileName, @Command = Command FROM @FileList
SET @FileName = ' :r ' + @FileName
RAISERROR (@FileName, 0, 1) WITH NOWAIT
EXEC xp_cmdshell @Command
DELETE FROM @FileList WHERE FileNumber = @FileNum
END
RETURN 0;
* 발견 .SQL 각 파일을 구문 분석 SQLCMD 명령을 실행 MSBuild 속성에서 프로젝트 경로를 얻을 수 있습니다. 또한 RunScriptsInFolder 호출에 대한 호출을 몇 줄 추가했습니다. 당신이 당신의 폴더 주문 파일이 실행되는 알 수 없습니다 때문에 당신은 그 일을하기 전에 모든 외부 키 검사를 사용하지 않아야하고
RAISERROR ('Disabling all constraints...', 0, 1) WITH NOWAIT
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
---- Run all files specified folder
BEGIN TRANSACTION
EXEC [Builder].[RunScriptsInFolder] '$(ProjectDir)Scripts\Post-Deployment\Data\'
COMMIT TRANSACTION
---- Enable all constraints
RAISERROR ('Re-enabling all constraints...', 0, 1) WITH NOWAIT
exec sp_msforeachtable @command1="print '?'", @command2='ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'
당신은 또한 궁금 할 완료되면이를 가능하게하는 이유 '$ (PROJECTDIR) 변수 아무튼 당신을 위해 일하지 마라. 사용하려면 * .dbproj 파일을 텍스트 편집기로 열고이 코드를 끝에 추가하십시오.
<PropertyGroup>
<SetVariables>
<Variable Name="ProjectDir" Value="$(ProjectDir)" />
</SetVariables>
</PropertyGroup>
은 또한 당신이 당신의 DB 프로젝트 속성을 열고 탭 변수를 찾아 설정 변수 PROJECTDIR = $를 추가 할 수 있습니다 (PROJECTDIR)