2011-12-20 3 views
0

SQL Server 2008 R2에 DB 프로젝트가 있습니다. 이 프로젝트 내에 테이블이 있습니다. 예 :VS2010 DB 프로젝트에서 DB 데이터 정렬 변경

CREATE TABLE [dbo].[MyTable](
    [IDField] [int] IDENTITY(1,1) NOT NULL, 
    [AnotherField] [int] NULL, 
    [StrangeBehaviour] [varchar](50) NULL, 
CONSTRAINT [PK_MyID] PRIMARY KEY CLUSTERED 
(
    [IDField] ASC 
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

테이블 스크립트는 다음과 같습니다. vsdbcmd.exe를 사용하여 프로젝트를 배포하면 예상대로 테이블이 생성/업데이트됩니다.

그러나 개체 탐색기의 SSMS에서 대상 데이터베이스에서 테이블 열 "StrangeBehaviour"를 선택하고 속성 또는 수정을 선택하면 데이터 정렬이 기본값 인 DB 기본값 (기본값 존재 윈도우 정렬은 -.> Latin1_General이 다음 겉으로는 무작위로 창 정렬로 설정되어

내가 스크립트로 테이블이 SSMS에서 나는 변경된 데이터 정렬을 볼 수 없습니다 "를 삽입"경우

나는 때문에.. 두 가지 질문이 있습니다.

  • 업그레이드 스크립트가 DB 프로젝트 내부의 SQL을 기반으로한다는 인상하에있었습니다. 그렇지 않습니까? 아니라면 추가 데이터에 어떻게 액세스합니까?

  • 변경된 데이터 정렬을 참조하는 스크립트가없는 경우이 속성을 대상 데이터베이스에 보관하는 방법은 무엇입니까?

답변

0

Properties > Database.sqlsettings에서 데이터베이스 프로젝트에서 데이터베이스 데이터 정렬 속성이 있습니다. Visual Studio 또는 VSDBCMD에서 배포 할 때 생성 된 스크립트는 이미 일치하지 않는 경우이 설정에 지정된 기본 정렬을 기본 설정으로 변경합니다.

그런 다음 Visual Studio에서 배포하여 만든 열의 정렬은이 설정을 기반으로합니다.

기본 대조 Latin1_General_CI_AS으로 새 데이터베이스를 만들어 테스트했습니다. 그런 다음 기본 데이터 정렬 설정을 SQL_Latin1_General_CP1_CI_AS으로 설정하여 새 데이터베이스 프로젝트를 만들었습니다. SQL Server 관리 Studio (SSMS) 내

... 
ALTER DATABASE [$(DatabaseName)] COLLATE SQL_Latin1_General_CP1_CI_AS; 


GO 
USE [$(DatabaseName)] 
GO 
/* 
Pre-Deployment Script Template 
... 
*/ 

GO 
PRINT N'Creating [dbo].[MyTable]...'; 


GO 
CREATE TABLE [dbo].[MyTable] (
    [IDField]   INT   IDENTITY (1, 1) NOT NULL, 
    [AnotherField]  INT   NULL, 
    [StrangeBehaviour] VARCHAR (50) NULL, 
    CONSTRAINT [PK_MyID] PRIMARY KEY CLUSTERED ([IDField] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY] 
); 


GO 
... 
+0

그러나이 데이터 정렬은 단일 열에서만 발생했으며 데이터베이스의 기본 데이터 정렬은 변경되지 않았습니다. –

0

가 자동으로 GUI를 통해 이루어 변경에 대한 스크립트를 생성하는 옵션이 있습니다 : 이것은 비주얼 스튜디오가 만들어 배포 스크립트입니다. 이 문제에 대한 해결책은 SSMS에서 제공하고 SQL Server 2005 및 SQL Server에서 모두 작동되는 2008 년

옵션 "도구" "옵션에

클릭에 SSMS 메뉴에서

클릭을 사용하려면 ... 디자이너 "에

클릭"자동 I 비슷한 가지고

0

"변경 스크립트를 생성"

이 확인란을 선택합니다 " 내 키보드에 난 점으로 난을 uppcase대로 문제 : İ (터키어 I)

아마이 경우 :

당신의 vsdbcmd.exe 도구 창 정렬에서 collalition 걸립니다.

그것은에서 창 당신의 정렬을 확인, 무작위되지 않습니다 :

http://msdn.microsoft.com/en-us/library/aa176553%28v=sql.80%29.aspx

여기에 SQL 데이터 정렬 대 창 정렬에 대한 좋은 링크입니다 :

http://msdn.microsoft.com/en-us/library/ms143508.aspx

내가 아니라고는 SQL 녀석이지만 내 검색어는 id에 포함되어 있습니다. İD

내가 Select Top 1000 rows라고 할 때 SQL 테이블의 컨텍스트 메뉴에서. 마찬가지로 실패 할 경우 Windows 데이터 정렬을 사용합니다.

그러나 내가 말할 때 Edit Top200 rows SQL 테이블의 컨텍스트 메뉴에서 작동합니다.