簡體   English   中英

插入SQL Server數據庫時文本被截斷

[英]Text is being truncated on Insert into SQL Server database

使用SqlCommand將數據插入SQL Server數據庫時,我們遇到了一個奇怪的問題。 如果我們嘗試在konnotiz1列中插入一個大文本,則會在43245個字符后截斷該文本。 由於某種原因,我不明白真正的應用程序代碼創建42909個字符。

這是列屬性頁面的屏幕截圖:

SQL-Server Management Studio屬性頁

以下代碼導致問題:

static void Test()
{
    using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(getConString()))
    {
        con.Open();
        System.Data.SqlClient.SqlCommand cmd = con.CreateCommand();
        cmd.CommandText = "Insert into kontakte (konlfdnr, konNotiz1) values (@konlfdnr, @konNotiz1)";
        cmd.CommandType = CommandType.Text;
        cmd.CommandTimeout = 60;

        // you can ignore this param, it's owner pk-column. 
        System.Data.SqlClient.SqlParameter param = cmd.Parameters.Add("@konlfdnr", SqlDbType.Char, 10);

        // better don't ask why we have to pad this... ;) 
        param.Value = "1".PadLeft(10);
        param.Direction = ParameterDirection.Input;

        param = cmd.Parameters.Add("@konNotiz1", SqlDbType.Text);
        param.Direction = ParameterDirection.Input;
        param.Value = getParamValue();

        cmd.ExecuteNonQuery();
        con.Close();
    }
}

private static string getParamValue()
{
     // my Textfile has something about 300000 characters. It's a html code from a mail.
     return System.IO.File.ReadAllText("C:\\Temp\\insert.txt");
}

private static string getConString()
{ 
    return @"Data Source=NB-JH1\SQLEXPRESS;Initial Catalog=Testsystem_Local;Integrated Security=True;Encrypt=True;TrustServerCertificate=True;Pooling=True;MultipleActiveResultSets=True;
}

有沒有人有想法,為什么文本被截斷以及我們如何才能使這個工作?

您的問題似乎是SQL Server Management Studio中的限制,而不是數據庫中的限制。 是一個關於這個問題的錯誤報告,它聲稱該錯誤已在最新版本中得到修復(我不知道這是否屬實)。 有變通辦法,如建議在這里 我沒有親自嘗試過。

您應該使用len()函數(或類似的東西)測試長度。 這將告訴您是否所有數據都存在。

我在數據庫中使用了很長的字符串,在表,變量和存儲過程之間來回傳遞它們,因此數據庫可以處理字符串。 問題出在獲取它們的界面中。

首先,Text是一種過時的SQL數據類型。 請改用varchar(max)。 我會嘗試更改字段的類型和參數的類型。

這肯定不能解決問題 - 但是很有可能消除(這就是導致問題的原因),這也是一個很好的做法(不使用已棄用的功能)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM