SQL Server DB 프로젝트 게시 작업을 통해 DB에 필드를 채우는 경우 매우 이상한 문제가 나타납니다. SQL Server DB 프로젝트 게시 빈 문자열에 0이 삽입되었습니다.
이
내가INSERT
스크립트가 수동으로 모든 작품을 잘 실행하는 경우이 인구 스크립트
set identity_insert CatalogueItemExtensionFields on
INSERT INTO CatalogueItemExtensionFields (rowid, fieldtype, description, nullable, defaultvalue, active_flag, orderpriority)
VALUES (dbo.ConstantProductGroupRowId(), 3, 'Product Group', 0, '', 1, dbo.ConstantProductGroupRowId()),
set identity_insert CatalogueItemExtensionFields off
있는 테이블 정의
CREATE TABLE [dbo].[CatalogueItemExtensionFields]
(
[RowID] tinyint identity not null,
[FieldType] tinyint not null,
[Description] varchar(120) not null,
[Nullable] bit not null,
[DefaultValue] varchar(100) null,
[Active_Flag] bit null,
[OrderPriority] tinyint not null,
[ContextGuid] uniqueidentifier not null
);
입니다. DB 프로젝트 게시의 일부로 실행하면 "0"이 삽입됩니다.
나는 생성 된 publish.sql
스크립트를 살펴 봤지만 모두 괜찮아 보입니다.
현재로서는 찾을 수있는 유일한 유사한 게시물은 this이지만 우리가 삽입하려는 필드가 varchar로 정의되어 있기 때문에 우리 사례에는 해당되지 않습니다.
이것은 우리를 미치게합니다. 어떤 아이디어?
삽입 0 어디? 거기에 8 개의 열이 있습니다. 이 스크립트는 SQLCMD 모드에서 실행됩니다 믿습니다. 따라서 SSMS를 SQLCMD 모드로 설정하고 동일한 작업을 수행하는지 확인하십시오 ('0'삽입). 제대로 작동하면 어떻게됩니까? 'dbo.ConstantProductGroupRowId()'는 사용자 정의 스칼라 함수입니까? 그것은 어떻게 생겼습니까? –
그냥 명확히하기 위해 "defaultvalue"열에 빈 문자열을 삽입하려고합니다. – maurocam
@NickMcDermaid, 우리는 방금 SQLCMD 모드에서 게시 스크립트를 실행하고 유효한 문자열을 쓰려고 할 때이 오류가 발생했습니다. '메시지 245, 수준 16, 상태 1, 줄 7 varchar 값'test '를 데이터로 변환 할 때 변환하지 못했습니다. int를 입력하십시오. ' 이것은 SQLCMD가 필드가 INT라고 생각하지만 테이블 정의에 나타나는 방식이 아님을 의미합니다. SQLCMD 모드에서 사용되는 모호한 DB 설정이 있습니까? – maurocam