Skip to main content

Character Limit for a Variable- Exec(@Variable) issues and solutions

Hi All,

When you are using Varchar (MAX) in declaring a Variable, Always remember, that VARCHAR(MAX) can hold only 8000 characters.

When we try to print Variables, PRINT Command display only 4000 character max.

When we try to execute, Variable (MAX) which is more than 8000 Character, we may not get exact Error to solve.

The problems seems to be with SET Statement which accepts only 4000 Characters.

In Order to Execute a Variable which is having VARCHAR (MAX) and the length of the strings are more than 8000 Character, Then best way to work is Splitting the Queries with Multiple Variable.

Example, If you have Dynamic Query which is 10000 characters, and is used as a string in a variable, Then,
we need to Split the Queries.

Find a Logical Break Point and Then concatenate remaining variables.

DECLARE @Query VARCHAR(MAX)
      DECLARE @Query1 VARCHAR(MAX)
      DECLARE @Query2 VARCHAR(MAX)
      DECLARE @Query3 VARCHAR(MAX)

      SET @Query1 = 'Select ……….[4000 Characters] '
SET @Query2= ' [Remaining next 4000 Characters]
SET @Query3= ' [Remaining next 4000 Characters till END of the Query]

     
      SET @Query= @Query1+@Query2+@Query3+@Query4

      EXEC (@Query)

This will work fine.

When you are working with Nvarchar, Then Instead of EXEC (@Query),
use, Execute Sp_ExecuteSQL @Query; When Using SP_EXECUTESQL function, use SET @Query1 = N'Select.......




Comments

Popular posts from this blog

Zip/Unzip multiple files and also include password for zipped file using SSIS

We have many scenario that we need to Zip many files which we come across and then so some operations like either sending it as a email or just moving zipped file to some other destinations etc. But we were using manual method to zip multiple files. In this post, I tried to create a package which will zip multiple files using SSIS. Here for Zipping files purpose, I'm using 7-ZIP which is free software available in google sites. Download files and install onto your system. First let me show how to Zip on file and later I will show how to zip multiple files using SSIS and 7Zip tool. Compressing Single file. Here I'm trying to Zip one single flat file which is of 40MB size. I kept this file in C:\Documents and Settings\\Desktop\test\source folder. Now to compress this file, I will open my SSIS and I'm dragging and dropping EXECUTE PROCESS TASK from Control Flow. Now right click on Execute Process task and go for edit and select Process option. In process tab,

SSIS: The Value Was Too Large To Fit In The Output Column

I had a SSIS package where I was calling a stored procedure in OLEDB Source and it was returning a “The Value Was Too Large to Fit in the Output Column” error. Well, My Datatype in OLEDB source was matching with my OLEDB Destination table. However, when I googled, we got solutions like to increase the output of OLEDB Source using Advanced Editor option . I was not at all comfortable with their solution as my source, destination and my intermediate transformation all are having same length and data type and I don’t want to change. Then I found that I was missing SET NOCOUNT ON option was missing in Stored Procedure. Once I added it, my data flow task ran successfully. 

How to move multiple files in ssis and also rename simultaneously

There are two ways to achieve this. 1) We can move the flat files and then rename it. 2) While moving files itself, automatic rename should be done. We will do the second type. The criteria is to rename the files while moving from source to destination. So for that, we need FILE SYSTEM TASK to be included. Secondly since we need to move many files, we will use FOR EACH LOOP CONTAINER. To fetch all the files, we can use FOR EACH LOOP task in SSIS. In collection tab, we can select FOREACH FILE enumerator option for fetching files and we can change enumerator configuration Folder option: Points to source where we need to fetch files. Files: will give us idea whether we need to fetch all the files (*.*) or if we give extension like *.txt, it is going to fetch only  .txt files . Once I give Source name in FOR EACH LOOP container, It is going to fetch all the files corresponding to that path. Retrieve file name: This option is used to let the variables mentioned in VARIA