SQLCMD 명령이지를 삽입 할 수 있스

나는 실행하려고sqlcmd.exe에 설치하기 위해 새로운 데이터베이스에서 명령 라인입니다. 내가 사용하여 SQL SERVER Express2012 년에 Windows7 64 비트입니다.

여기's 명령을 사용:

SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 

그리고 여기's pieceof sql 파일 생성 스크립트:

    CREATE DATABASE aqualogy 
    COLLATE Modern_Spanish_CI_AS
    WITH TRUSTWORTHY ON, DB_CHAINING ON;
    GO
    use aqualogy
    GO
    CREATE TABLE [dbo].[BaseLayers] (
    [Code] nchar(100) NOT NULL ,
    [Geometry] nvarchar(MAX) NOT NULL ,
    [IsActive] bit NOT NULL DEFAULT ((1)) 
    )

    EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'Capas de     cartografía base de la aplicaicón. Consideramos en Galia Móvil la cartografía(...)'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'BaseLayers'

잘 확인하시기 바랍에는 몇 가지 중심에서 말하는 테이블's 설명합니다. 데이터베이스를 만들과 함께 아무 문제 없습니다. 'Collate'이해 스크립트에서 볼 수 있듯이 부착된 스크린 샷. 이것에도 불구하고,중앙은 제대로 표시할 때 검사하는 테이블.

나는'd 정말 감사합니다. 대단히 감사합니다.

[편집]:모든 안녕하세요. 변화하는 SQL 파일을 사용하여 인코딩 Notepad++했다. 매우 감사드립니다 당신을 도울:나는 배운 흥미로운 무언가 이 문제!

질문에 대한 의견 (2)

또 다른 옵션은,하나는've 배운,에서 오sqlcmd문서. 을 설정해야 합 코드페이지를 위한sqlcmd일치하는 파일의 인코딩이 있습니다. 의 경우에 UTF-8,codepage 이고 65001 그래서 당신이'd 고 싶:

벤 S.\MSSQLSERVER08-V17-E-내%~dp0\aqualogyDB.sql-o%~dp0\databaseCreationLog.로그인 -f 고 65001

해설 (3)
해결책

으로서 의견,문제는지와 정확히 일치하는 테이블이나 방법 SQLCMD 가져옵니다. 일반적으로,문제가 있는 수입과 관련된 형식으로 스크립트의 자체입니다.

Management Studio 자체의 옵션을 제공합 절약 특정 인코딩되는 문제를 해결해야에서 미래입니다. 파일을 저장할 때 처음으로(또는 사용으로 저장)당신은 클릭해야하는 작은 화살표 근처**저장***버튼 옵션을 사용하저장인코딩**.

기본적으로 저장하는 파일에서서유럽(1252). 때마다 어떤 특별한 문자를 사용 UTF8(그러나 어쩌면 다른 제한 인코딩을 맞을 것)기 때문에 그것이's 일반적으로 가장 빠르다.

나는'm 지(그림에서)는'다시 사용하여 SSMS,그래서인지 확인하십시오 당신의 자신의 편집기의 옵션을 저장하는 파일에서 다른 인코딩이 있습니다. 하지 않을 경우,파일 변환에서 스마트 편집기(예를've 도에 Notepad++)일반적으로 작동합니다. 비록 작동하지 않을 수 있습니다 당신이'다시 변환하에서 다양한 인코딩을 좁게 한 다음 다시 넓은 하나를(예를 들어:에서는 유니코드하는 ANSI 고 다시 Unicode).

해설 (6)

이 종류의 것은 매우 까다로운 일이기 때문에 그래서 많은 말하지 않고 당신입니다.

첫 번째로 할 것이 sqlcmd 를 사용하여 문자열을 표시. 표시하는 경우에 올바르게 cmd.exe 창는's 나 유용한 사실이다. 다음으로,저는'd 를 선택하는 행 변환청 문자열을 varbinary 무엇을 보고 바이 있을 수 있습니다. 생각**cartografía**으로 표시됩니다0x636172746f67726166c3ad61`,어디로 악센트"i"가 표시되는 바이트 c3ad 은 UTF-8 인코딩을 하는 캐릭터입니다. It's 없이 좋은 데 UTF-8 에 현대적인 스페인어 칼럼(Windows1252). 바이트 값에서 윈도우 1252 는 캐릭터가 237 수(hex ED).

면 열을 보유하고 misencoded 하는 데이터 오류에있다 그것이 어떻게 삽입됩니다. 아마도 제 주도에서 문자 상수--N'string'알 SQL 서버를 생성하는 유니코드 문자열이지만,보통'string'을 나타내는 문자를 사용하여 클라이언트's encoding--삽입 할 것이 현대적인 스페인어로 대신합니다.

면 열을 보유하고 올바르게 인코딩 된 데이터를,그 다음 말할 것 당신이 버그를 발견하에 표시됩니다.

할 수 있는 경우't get sqlcmd 를 삽입하는 데이터를 올바르게(최 N 는지)를 원하는 불평하는 Microsoft. 할 때 수행할 수 있는 바이트는 열에 저장된 사용자로 변환(colname varbinary)`--중요한 역할을 할 것입니다 무엇을 설명하는's 가 잘못입니다.

해설 (2)