내 SSDT 프로젝트에 몇 가지 데이터 마이그레이션 스크립트가 있습니다. 다른 임시 테이블을 하나 개의 테이블에서데이터 마이그레이션 스크립트를 사용할 때 "잘못된 열 이름"오류가 발생했습니다.
우선 한 데이터를 저장한다 : 다른 테이블 임시 테이블
IF EXISTS
(
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = N'DocumentEvent'
AND column_name = N'Thumbprint'
)
BEGIN
IF NOT EXISTS
(
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = N'tmp_DocumentEventCertificates'
)
BEGIN
CREATE TABLE tmp_DocumentEventCertificates
(
[EventId] UNIQUEIDENTIFIER NOT NULL,
[Thumbprint] nvarchar(100)
)
END
INSERT INTO
tmp_DocumentEventCertificates
SELECT
[EventId],
[Thumbprint]
FROM
[DocumentEvent]
WHERE
[Thumbprint] IS NOT NULL
END
번째 데이터를 전송한다 : [Thumbprint]
가 [DocumentEvent]
테이블로부터 제거되는
IF EXISTS
(
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = N'tmp_DocumentEventCertificates'
)
BEGIN
UPDATE
[DocumentAttachment]
SET
[DocumentAttachment].[Certificate_Thumbprint] = tmp.[Thumbprint]
FROM
tmp_DocumentEventCertificates AS tmp
WHERE
([DocumentAttachment].[EventId] = tmp.[EventId]) AND
([DocumentAttachment].[ParentDocumentAttachmentId] IS NOT NULL)
DROP TABLE tmp_DocumentEventCertificates
END
칼럼.
열 [Certificate_Thumbprint]
은 [DocumentAttachment]
테이블에 추가됩니다.
데이터는 [DocumentEvent].[Thumbprint]
에서 [DocumentAttachment].[Certificate_Thumbprint]
으로 전송되어야합니다. 데이터베이스 즉, 위의 이동을 필요로하는 상태에있을 때
이 스크립트는 [DocumentEvent].[Thumbprint]
이 존재, 예상대로 작동하고, [DocumentAttachment].[Certificate_Thumbprint]
는 존재하지 않습니다.
그러나 데이터베이스를 마이그레이션 할 때 때문에 "dumbpac 배포에 실패했습니다."잘못된 열 이름 '지문'오류가 발생했습니다.
SQLCMD가 전체적으로 배포 스크립트를 컴파일하려고 시도하기 때문에 이러한 현상이 발생합니다. 이는 [DocumentEvent].[Thumbprint]
이있는 경우에만 성공적으로 수행 할 수 있습니다.
하지만 해결 방법은 무엇입니까?
첫 번째 스크립트에서 IF EXISTS
처럼 보입니다.
감사합니다 많이! 이것은 나를 위해 작동합니다. – Dennis