2011-06-14 2 views
0

SQL 2005를 사용하는 동안 nvarchar (max) 필드에 8000자를 넘을 수 없습니다.nvarchar (최대) 필드에 8000 개가 넘는 MSSQL을 삽입하십시오.

이것은 정말 수수께끼입니다. 삽입, 업데이트 및 업데이 트를 시도했다. 행운을 빕니다. 콘솔에 완전히 삽입 할 수없고 .net에서 일관되게 오류가 발생합니다.

데이터 유형 text 및 varchar는 add 연산자에서 호환되지 않습니다.

update tablename set columnname='long text' 

모든 것이 항상 8000 개 문자 (텍스트가 11,000 자)에서 잘립니다 :

삽입 문은

insert into tablename (columnname) values (' long text'); 

업데이트입니다. 몇 가지 검사를 실행, 나는

select @@textsize 

내가 잘못 여기 일을 할 수있는 어떤 2147483647

어떤 아이디어를주는 것을 볼?

+0

그렇다면 '데이터 유형 텍스트'비트는 어디서 오는 것입니까? 결국'text' 필드가 있습니까? – GSerg

+0

잘 렸는지, 오류가 있습니까? 귀하의 질문 텍스트에서 명확하지 않습니다. –

+0

콘솔에서 삽입 할 때 잘립니다. – anurodhp

답변

4

코드가 어딘가에서 값을 자릅니다. 전체 코드를 포함하지 않으므로 을 추측 할 수 없습니다.은 잘립니다. 일반적인 장소는 매개 변수 선언입니다. 올바른 코드는 다음과 같아야합니다

난 그냥 결국이 문제를했고했습니다
SqlCommand cmd = new SqlCommand(
    @"insert into table (column) values (@param)", conn, trn); 
cmd.Paramaters.Add("@param", SqlDbType.NVarChar, -1); 
cmd.Parameters["@param"].Value = myLongVariable; 
cmd.ExecuteNonQuery(); 
0
using (System.Data.SqlClient.SqlConnection con = new 
    SqlConnection("YourConnection string")) 
{ 
     con.Open(); 
     using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand()) 
     { 
      string expression = "long text................................."; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "Your Stored Procedure"; 
      cmd.Parameters.Add("Your long text Parameter Name ", 
           SqlDbType.NVarChar).Value = expression;  
      cmd.Connection = con; 
      cmd.ExecuteNonQuery(); 
     } 

} 
0

내가 저장 프로 시저를 호출하는 VBA 코드에서 사용 된 상수 ADO로 아래로 추적. ,, SqlDbType.NVarChar 원래 나는 "오른쪽 절단을 String 데이터"나에게 메시지를을 준 adVarChar로했다,하지만 난 adLongVarChar이를 교환 할 때 지금

0

cmd.Paramaters.Add ("@의 PARAM을"잘 작동 - 1) .Value = parametervaluehere;

여기서 -1은 varchar/nvarchar 데이터 형식의 최대 길이를 의미합니다.

관련 문제