2012-09-18 130 views
3

我正在C#中創建一個數據集成工具,它將數據從一個數據庫再移至中間層,然後移至最後,我將所需的數據庫查詢存儲在SQL CE數據庫中,嘗試插入查詢到一個表中的一個,我收到:指定的標記太長。最大長度爲128個字符

主要錯誤0x80040E14,次要錯誤25508「更改爲MyQuery」指定的令牌 太長。最大長度爲128個字符。 [最大 尺寸的令牌(如果已知)= 128,令牌(如果已知)= 「我的一些查詢的」

查詢:

update SqlQueries Set Query = "CREATE TABLE [dbo].[ASI_SYBranch](
BranchName char(255), 
BranchLogoName char(255), 
NoteText TEXT, 
BranchID char(30), 
Active bit, 
CoLocationName char(255), 
City char(50), 
Country char(2), 
State char(50), 
CoNoteText TEXT, 
CoLocationID char(10), 
Warehouse char(10), 
LocationName char(255), 
TaxRegID char(50), 
TaxZoneID char(10), 
ShipComplete bit, 
LocationID char(10), 
SameasMainInfo bit, 
BranchAddrLine1 char(50), 
BranchAddrLine2 char(50), 
BranchCity char(50), 
BranchCountry char(2), 
BranchState char(50), 
BranchPostalCode char(20), 
BranchBusinessName char(255), 
BranchAttention char(255), 
BranchEmail char(255), 
BranchWeb char(255), 
BranchPhone1 char(50), 
BranchPhone2 char(50), 
BranchFax char(50), 
SameasMainAddr bit, 
LocBusinessName char(255), 
LocAttention char(255), 
LocEmail char(255), 
LocWeb char(255), 
LocPhone1 char(50), 
LocPhone2 char(50), 
LocFax char(50), 
LocAddrLine1 char(50), 
LocAddrLine2 char(50), 
LocCity char(50), 
LocCountry char(2), 
LocState char(50), 
LocPostalCode char(20), 
DefaultCountry char(2), 
AccessRole char(64), 
LocTaxRegID char(50), 
SalesSub char(30), 
ExpenseSub char(30), 
FreightSub char(30), 
DiscountSub char(30), 
CuryGainLossSub char(30), 
Description char(60), 
CurySymbol char(10), 
DecimalPrecision smallint, 
BaseCurrencyID char(5), 
PhoneMask char(50)) 
GO" Where RefNum = 3 

表結構:

RefNum   Int 
Description  nvarchar 
Query   ntext (I tried nvarchar max also) 

我發現衝突的文章說明這可能/不可能是因爲我的SQL語句的長度

問題:

1.這是真的嗎?
2.如果是這樣,我該如何解決它?

答:

它結束了,因爲那裏有我的 SQL語句中的選項卡和換行符

+0

沒有線索,我只是目前正試圖存儲多個CREATE TABLE語句在該表中 –

回答

0

聽起來像是你已經有了一個文本字段長度限制在你的數據庫。您需要將文本分成128個字符長的字符串,或者修改表格的模式以允許更長的字符串。

你能告訴我們你的表模式和你試圖插入的數據的例子嗎?

+0

好吧我場模式明確允許使用更多的則128個字符,除非在VS或SQL Management Studio中有某種我不知道的其他設置? –

+0

啊,我現在看到了這個問題 - 我認爲SQL CE在CREATE TABLE命令上限制了128個字符。你可以創建一個包含更少字段的表,然後使用ALTER TABLE命令添加更多的字段 - 這是一種破解,但應該可行。然而,這通常是數據庫規範化不良的症狀 - 我可以建議對您的數據庫設計進行一些更改(例如,將地址和電話字段移出)。 – Dai

+0

我沒有運行create table命令,該命令正在存儲在一個SQL CE數據庫中,該數據庫正在向我提供問題 –

0

SqlCe是一個僅有unicode的數據庫。因此,如果您正在使用VARCHAR字段(主要在CREATE TABLE操作中),則必須更改爲NVARCHAR數據類型。否則,你可以得到這個錯誤。

編輯: 這是CHAR領域以及真...

+0

該表僅存儲create table語句,然後該語句將在SQL數據庫上運行 –

相關問題