2011-12-20 40 views
0

我在SQL Server 2008 R2中有一個數據庫項目。我在這個項目中有一張桌子,例如:在VS2010 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」並選擇屬性或修改,那麼我會發現排序規則設置爲數據庫默認值之外的其他值幸福Windows排序規則 - > Latin1_General這會被設置爲一個看似隨意的Windows排序規則

如果我腳本的表爲「插入到」在SSMS然後我看不到改變的整理

因此我。有兩個問題:

  • 我的印象是升級腳本是基於DB項目中的SQL - 是不是這種情況,如果不是,我該如何訪問附加數據?

  • 當沒有任何腳本似乎引用已更改的排序規則時,此屬性如何在目標數據庫中保留?

回答

0

在數據庫項目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

但是,此排序規則僅發生在單列中,數據庫的默認排序規則不變。 –

0

在SQL Server Management Studio中(SSMS)有自動生成通過GUI進行更改腳本的選項。這個問題的解決方案在SSMS中並與雙方的SQL Server 2005和SQL Server 2008工作

啓用該選項

從SSMS菜單中點擊「工具」

點擊「Options ......」

點擊‘設計師’

勾選‘自動生成更改腳本’

0

我得到了類似的問題在我的鍵盤我已經uppcase我點:İ(土耳其I)

也許這種情況下:

vsdbcmd.exe工具需要從Windows整理collalition。

這不是隨機的,從檢查您的Windows您的歸類:

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

這裏是關於Windows排序有很大的聯繫VS SQL排序規則:

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

我不是sql的傢伙,但我的查詢,包括id轉換爲İD

當我從sql表的上下文菜單中說Select Top 1000 rows。 因爲如果失敗,它使用窗口歸類。

但是,當我說,Edit Top200 rows從SQL表的上下文菜單中,它的工作原理。