2011-12-20 4 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では、ターゲットDBでテーブル列「StrangeBehaviour」を選択して[プロパティ]または[変更]を選択すると、照合順序がDBデフォルト以外の値に設定されていることがわかります。。Windowsの照合順序であること - 。> Latin1_Generalこれはその後、一見ランダムなWindows照合順序に設定されている

IスクリプトSSMSで「挿入するには」などの表は、その後、私は変更され、照合が表示されない場合

私はそのため2つの質問があります:

  • DBプロジェクト内のSQLに基づいてアップグレードスクリプトが作成されているという印象を受けましたが、そうでない場合はどうすれば追加データにアクセスできますか?

  • 変更された照合を参照しているスクリプトがない場合、このプロパティはどのようにターゲットデータベースに保持されますか?

答えて

0

データベースプロジェクトにProperties > Database.sqlsettingsのデータベース照合プロパティがあります。 Visual StudioまたはVSDBCMDから展開するときに生成されたスクリプトは、既定の照合順序がこの照合順序で指定されている照合順序に変更されます。

次に、Visual Studioからの展開によって作成された列の照合は、この設定に基づいて行われます。

これは、既定の照合順序Latin1_General_CI_ASで新しいデータベースを作成することでこれをテストしました。その後、デフォルトの照合設定をSQL_Latin1_General_CP1_CI_ASに設定して、新しいデータベースプロジェクトを作成しました。 SQL Server Management 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

ただし、この照合は1つの列に対してのみ行われました。データベースのデフォルトの照合は変更されません。 –

0

が自動的にGUIを介して行わ変更用のスクリプトを生成するオプションがあります:これは、Visual Studioが作成する展開スクリプトです。この問題の解決策は、SSMSで提供し、SSMSメニューからオプション

を有効にするには、SQL Server 2005およびSQL Server 2008の

の両方で動作されるオプション」の「ツール」に

クリックをクリックしてくださいデザイナー...」上

クリックして 『『自動変更スクリプトを生成

0

を』

は、チェックボックスをチェックし、』私は類似しましたİ(トルコ語I)

おそらくこのケースを:私のキーボードのような問題は、私、私はドットでuppcaseいる

あなたvsdbcmd.exeツールは、Windows照合順序からcollalitionを取ります。

それからあなたの窓あなたの照合をチェックし、ランダムではない:私はないです

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

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

、ここでSQL照合順序対Windows照合順序についての素晴らしいリンクですSQLの人ですが、idを含むクエリはİD

にトランスクリプトされています

私がと言うとき、SQLテーブルのコンテキストメニューから。 これは失敗した場合にWindows照合を使用します。

しかし、私は、Edit Top200 rows SQLテーブルのコンテキストメニューから、それは動作します。

関連する問題