RSS

Bulk Insert from comma (, or ^) separated files

- To upload the list of available CSV or ‘^’ separated files in the shared location to the Sql server using SQL Bulk Insert and the ‘XP_cmdshell’.
- The SQL Bulk insert command is used to upload the special character separated files into DB at a time with Line feeds terminate.
- The ‘XP_CmdShall’ is used to list the files available the directory and accessing the files for bulk insert.
o For Running this we need a admin privilege and also need reconfigure to execute this Job.
o ‘sp_configure’ is used to reconfiguration.
- For Processing and Tracking Purpose we need 3 tables
o T_FILEDETAIL
 This is used to Tracking the each files loaded and if made successfully then ‘FileStatus’ flage is to be ‘Y’, otherwise ‘N’.
o T_VikingData_Middleware
 This table is act as a middleware for storing each file details temporaraly and moved to the T_Viking data orignal table.
o T_VIKINGDATA
 This is the Main table to maintain all the values from the CSV or ‘^’ seprated files.
- The Table structures are:

CREATE PROCEDURE [dbo].[USP_BulkCSVUploader]  

        @DESTINATIONPATH VARCHAR(550)  

AS  

        BEGIN                  

  SET NOCOUNT ON;

                DECLARE @FILENAMES VARCHAR(64);

                DECLARE @CMDSCRIPT VARCHAR(8000);

                -- DECLARE @DESTINATIONPATH VARCHAR(512);

                DECLARE @MINROW  INT;

                DECLARE @MAXROW  INT;

                DECLARE @QRYCMD1 VARCHAR(1500);

                DECLARE @QRYCMD2 VARCHAR(1500);

                DECLARE @FILETABLE TABLE (ROWID INT IDENTITY, FILENAMES VARCHAR(128))

                ---** CREATING TEMP TABLE ** ---

                CREATE TABLE #ORIGINALFILELIST

                             (

                                          ROWID     INT IDENTITY,

                                          FILENAMES VARCHAR(1000) NULL

                             );

                

                ---** DESTINATION PATH WHERE RPT FILES ARE KEPT ** ---

                -- SET @DESTINATIONPATH = '\\10.16.105.171\VIKINGDATA\UHG\DCNLOG\'

                --SET @DESTINATIONPATH = '\\10.16.131.141\e\error\'

                DELETE

                FROM   T_FILEDETAIL

                WHERE  FILESTATUS='N'

                BEGIN TRY

                        ---- To allow advanced options to be changed.

                        EXEC sp_configure 'show advanced options',

                                1

                                -- To update the currently configured value for advanced options.

                                RECONFIGURE

                                -- To enable the feature.

                        EXEC sp_configure 'xp_cmdshell',

                                1

                                -- To update the currently configured value for this feature.

                                RECONFIGURE

                END TRY

                BEGIN CATCH

                        PRINT ERROR_MESSAGE()

                END CATCH

                ---** BUILD THE STRING TO CAPTURE THE FILE NAMES IN THE RESTORE LOCATION ** ---

                SELECT @QRYCMD1 = 'MASTER.DBO.XP_CMDSHELL ' + CHAR(39) + 'DIR ' + @DESTINATIONPATH +'\*.* /L/B' + CHAR(39);

                

                ---** BUILD THE STRING TO POPULATE THE #ORIGINALFILELIST TEMPORARY TABLE ** ---

                SELECT @QRYCMD2 = 'INSERT INTO #ORIGINALFILELIST(FILENAMES)' + CHAR(13) + 'EXEC ' + @QRYCMD1;

                

                ---** EXECUTE THE STRING TO POPULATE THE #ORIGINALFILELIST TABLE ** ---

                EXEC (@QRYCMD2);

                SELECT @DESTINATIONPATH,

                       FILENAMES       ,

                       FILENAMES

                FROM   #ORIGINALFILELIST;

                

                ---** STORING THE RPT FOLDER FULL DETAILS

                INSERT

                INTO   T_FILEDETAIL

                       (

                              FILENAMES   ,

                              FILELOCATION,

                              FILESTATUS  ,

                              FILEUPDATETIME

                       )

                SELECT FILENAMES       ,

                       @DESTINATIONPATH,

                       'N'             ,

                       GETDATE()

                FROM   #ORIGINALFILELIST

                ---** STORING THE RPT FOLDER STATUS DETAILS ** ---

                INSERT

                INTO   @FILETABLE

                SELECT FILENAMES

                FROM   (SELECT FILENAMES,

                               FILESTATUS

                       FROM    T_FILEDETAIL

                       WHERE   (

                                       FILENAMES LIKE '%.dcnlog'

                               OR      FILENAMES LIKE '%.rpt'

                               )

                       AND     FILESTATUS = 'N'

                       )

                       r

                ---** SELECTING ROWS ** ---

                SELECT @MINROW = MIN(ROWID)

                FROM   @FILETABLE ;

                

                SELECT @MAXROW = MAX(ROWID)

                FROM   @FILETABLE ;

                  

                IF EXISTS  

    (SELECT TOP 1  

      *  

    FROM    @FILETABLE  

    )  

    BEGIN  

     WHILE @MINROW <= @MAXROW  

      BEGIN

      TRUNCATE TABLE DBO.T_VikingData_Middleware;

            

      SELECT @FILENAMES = FILENAMES

      FROM   @FILETABLE

      WHERE  ROWID = @MINROW;

            

      UPDATE T_FILEDETAIL

      SET    FILESTATUS = 'W'

      WHERE  FILENAMES  = @FILENAMES

      ---** INSERTING INTO INTERMEDIATE TABLE ** ---

      BEGIN TRY

        SET @CMDSCRIPT = 'BULK INSERT T_VikingData_Middleware FROM '''+@DESTINATIONPATH+ @FILENAMES+'''  WITH (FIELDTERMINATOR = ''^'',ROWTERMINATOR = '''+CHAR(10)+''')'

        EXEC(@CMDSCRIPT)

        ---** INSERTING INTO MAIN TABLE  ** ---

        INSERT

        INTO   T_VIKINGDATA

            (

             CUST         ,

             PROJ         ,

             JULIANDATE   ,

             FOLDER       ,

             DCN          ,

             STAGEMODE    ,

             USERID       ,

             COFNAME      ,

             STARTTIME    ,

             ENDTIME      ,

             VIKDOCUMENT  ,

             FIELDVISITED ,

             KEYSTROKES   ,

             VALIDCHARS   ,

             VERCHAR      ,

             VERCHARCHANGE,

             VERFLDCHANGE ,

             TDIFF        ,

             EventON      ,

             LOC_ORIGINAL ,

             location

            )

        SELECT CUST                                      ,

            PROJ                                      ,

            JULIANDATE                                ,

            FOLDER                                    ,

            DCN                                       ,

            STAGEMODE                                 ,

            USERID                                    ,

            COFNAME                                   ,

            STARTTIME                                 ,

            ENDTIME                                   ,

            VIKDOCUMENT                               ,

            FIELDVISITED                              ,

            KEYSTROKES                                ,

            VALIDCHARS                                ,

            VERCHAR                                   ,

            VERCHARCHANGE                             ,

            CAST(SUBSTRING(VerFldChange, 1, 1) AS INT),

            DATEDIFF(SECOND,STARTTIME,ENDTIME)        ,

            GETDATE()                                 ,

            LOCATION                                  ,

            LOCATION

        FROM   T_VikingData_Middleware

        UPDATE T_FILEDETAIL

        SET    FILESTATUS = 'Y'

        WHERE  FILENAMES  = @FILENAMES

      END TRY

      BEGIN CATCH

        PRINT 'IN ERR 1' +CONVERT(VARCHAR,ERROR_NUMBER()) + ERROR_MESSAGE()

        UPDATE T_FILEDETAIL

        SET    ERR_REASON = ERROR_MESSAGE()

        WHERE  FILENAMES  = @FILENAMES

      END CATCH

      SET @MINROW = @MINROW + 1;

    END

      UPDATE V  

      SET    LOCATION=DBO.FN_SPLIT_N(LOCATION,'^')  

      FROM   T_VIKINGDATA V  

      WHERE  LOC_ORIGINAL LIKE '%^%'  

   END          

    END  

read comments Read User's Comments

How Enable MS SQL Server to Mixed Mode Authentication

 Enabling  MS SQL Server to Mixed Mode Authentication

 To enable mixed mode Authentication in Microsoft SQL Server please follow the steps below.

       To change security authentication mode to mixed mode
             Step 1: Open SQL Server Management Studio and login with Windows Authentication.
                                           


             Step 1:  In SQL Server Management Studio Object Explorer, right-click the server, and then 
                           click Properties.                                       
 
              Step 2: On the Security page, under Server authentication, select SQL Server and Windows
                           Authentication mode, and then click OK.
                                       

              Step 3: In the SQL Server Management Studio dialog box, click OK to acknowledge the
                           requirement to restart SQL Server.



        To Enable the SA Login by using Management Studio

              Step 1 :In Object Explorer, expand Security, expand Logins, right-click  Sa, and then click
                          Properties.

                                               
              Step 2: On the General page, create and confirm a new highly secure password for the Sa
                           login.
                                               
              Step 3: On the Status page, in the Login section, click Enabled, and then click OK.
                                           
                   Now your SQL Server Authentication is enabled and you are able to login with the Sa
                   and password which newly created.

read comments Read User's Comments

Delete Shared Folder and it's Files from SQL Script using xp_cmdShell Commands.

We can use Xp_cmdShell command to delete the shared path files.

Syntax:
EXEC XP_CMDSHELL 'del ""'

Example:

EXEC xp_cmdshell 'del "\\GBSRPABPRD01\AutomationInputOutputDetails\Email Notification\Output\PDF\1\1.pdf"'

Normally the xp_cmdshell command is not enabled with SQL Server. We need to enable with Admin rights (i.e., Sa Rights) using the below SQL script for enabling the Xp_cmdshell command.

---- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
---- To update the currently configured value for advanced options.
RECONFIGURE
GO
---- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
---- To update the currently configured value for this feature.
RECONFIGURE
GO

read comments Read User's Comments