Изменение параметров сортировки БД в проекте БД VS2010 - PullRequest
1 голос
/ 20 декабря 2011

У меня есть проект БД в SQL Server 2008 R2. У меня есть таблица в этом проекте, например ::10000

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» на целевой БД и выберу «Свойства» или «Изменить», я вижу, что для параметров сортировки установлено значение, отличное от значения по умолчанию для БД (по умолчанию используется значение Windows Collation -> Latin1_General. Затем устанавливается случайная сортировка окон.

Если я запишу таблицу как «Вставить в» в SSMS, я не увижу измененное сопоставление.

Поэтому у меня два вопроса:

  • У меня сложилось впечатление, что сценарий обновления основан на SQL внутри проекта БД - это не тот случай, и если нет, то как мне получить доступ к дополнительным данным?

  • Как это свойство хранится в целевой базе данных, когда ни один из сценариев, по-видимому, не ссылается на измененное сопоставление?

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

В проекте базы данных в Properties > Database.sqlsettings имеется свойство сортировки базы данных.Сценарий, сгенерированный при развертывании из Visual Studio или VSDBCMD, изменит сопоставление по умолчанию на значение, указанное в этом параметре, если оно уже не совпадает.

Тогда будет сопоставлено сопоставление столбцов, созданных при развертывании из Visual Studio.на основе этого параметра.

Я проверил это, создав новую базу данных с параметрами сортировки по умолчанию Latin1_General_CI_AS.Затем я создал новый проект базы данных с параметром сортировки по умолчанию, установленным на SQL_Latin1_General_CP1_CI_AS.Это сценарий развертывания, который Visual Studio создает:

...
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 голосов
/ 29 декабря 2011

У меня возникла та же проблема, что и в моей клавиатуре. У меня есть uppcase i с точкой: İ (Turkish i)

Вероятно, это так:

ваш vsdbcmd.exe инструмент получает конфликт из оконПараметры сортировки.

Это не случайно, проверьте ваши параметры сортировки в Windows:

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

и вот отличная ссылка на параметры сортировки Windows и SQL сортировки:

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

Я не sql парень, но мои запросы, включая id, переводятся в İD

, когда я говорю Select Top 1000 rows из контекстного меню таблицы SQL,Поскольку он использует параметры сортировки Windows, если не удается.

Однако, когда я говорю, Edit Top200 rows из контекстного меню таблицы SQL, это работает.

0 голосов
/ 25 декабря 2011

В SQL Server Management Studio (SSMS) есть возможность автоматически создавать сценарии для ваших изменений, выполненных через графический интерфейс. Решение этой проблемы предоставляется в SSMS и работает как с SQL Server 2005, так и с SQL Server 2008.

Для включения опции

В меню SSMS нажмите «Инструменты»

Нажмите «Опции ...»

Нажмите на «Дизайнеры»

Установите флажок «Автоматически генерировать сценарии изменения»

...