{"id":815,"date":"2025-10-30T15:09:05","date_gmt":"2025-10-30T14:09:05","guid":{"rendered":"https:\/\/www.silverice.it\/IpercubeTechWP1\/?page_id=815"},"modified":"2025-10-30T15:15:35","modified_gmt":"2025-10-30T14:15:35","slug":"sqlbulkwrite","status":"publish","type":"page","link":"https:\/\/www.silverice.it\/IpercubeTechWP1\/ipercube-utilities\/sql-functions\/sqlbulkwrite\/","title":{"rendered":"Sql Bulk Write"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Performs a bulk insert operation from a&nbsp;<strong>DataTable<\/strong>&nbsp;into a specified SQL Server table using&nbsp;<strong>SqlBulkCopy<\/strong>&nbsp;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This function maps each column from the&nbsp;<strong>DataTable<\/strong>&nbsp;to the destination SQL table by column name. If a known&nbsp;<strong>SqlException<\/strong>&nbsp;related to column length mismatch occurs, the error message will include the column name and maximum allowed length. This function uses reflection to extract internal metadata from&nbsp;<strong>SqlBulkCopy<\/strong>&nbsp;to provide detailed error diagnostics.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column page-snippet is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Geist-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-Geist-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">VB<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>    Public Function SqlBulkWrite(MyConnection As SqlConnection, \n                                 ByVal DataTable As DataTable, \n                                 ByVal DestinationTbl As String, \n                                 Optional ByVal BatchSize As Integer = 1000) As String\n\n        Dim szMsg As String = String.Empty\n\n        If Not MyConnection.State = ConnectionState.Open Then MyConnection.Open()\n\n        Using sbc As New SqlBulkCopy(MyConnection)\n            Try\n                sbc.DestinationTableName = DestinationTbl\n                sbc.BatchSize = BatchSize\n\n                ' Map Columns\n                For Each cColumn As DataColumn In DataTable.Columns\n                    sbc.ColumnMappings.Add(cColumn.ColumnName, cColumn.ColumnName)\n                Next\n\n                sbc.WriteToServer(DataTable)\n\n            Catch exSql As SqlException\n\n                If exSql.Message.ToLower.Contains(\"received an invalid column length from the bcp client for colid\") Then\n                    Dim pattern As String = \"\\d+\"\n                    Dim match As Match = Regex.Match(exSql.Message.ToString(), pattern)\n                    Dim index As Integer = Convert.ToInt32(match.Value) - 1\n\n                    Dim fi As FieldInfo = GetType(SqlBulkCopy).GetField(\"_sortedColumnMappings\",\n                              BindingFlags.NonPublic Or BindingFlags.Instance)\n                    Dim sortedColumns As Object = fi.GetValue(sbc)\n                    Dim items As Object() = CType(sortedColumns.GetType().GetField(\"_items\",\n                                       BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(sortedColumns), Object())\n\n                    Dim itemData As FieldInfo = items(index).GetType().GetField(\"_metadata\", \n                                 BindingFlags.NonPublic Or \n                                 BindingFlags.Instance)\n                    Dim metadata As Object = itemData.GetValue(items(index))\n\n                    Dim column As Object = metadata.GetType().GetField(\"column\", \n                             BindingFlags.Public Or \n                             BindingFlags.NonPublic Or \n                             BindingFlags.Instance).GetValue(metadata)\n                    Dim length As Object = metadata.GetType().GetField(\"length\", \n                             BindingFlags.Public Or \n                             BindingFlags.NonPublic Or \n                             BindingFlags.Instance).GetValue(metadata)\n\n                    szMsg = $\"Column: {column} contains data with a length greater than: {length}\"\n                Else\n                    szMsg = exSql.Message\n                End If\n\n            Catch ex As Exception\n                szMsg = ex.Message\n            End Try\n\n        End Using\n\n        Return szMsg\n    End Function<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">Public Function <\/span><span style=\"color: #DCDCAA\">SqlBulkWrite<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">MyConnection<\/span><span style=\"color: #D4D4D4\"> As <\/span><span style=\"color: #4EC9B0\">SqlConnection<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 ByVal DataTable As <\/span><span style=\"color: #4EC9B0\">DataTable<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 ByVal DestinationTbl As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 Optional ByVal BatchSize As <\/span><span style=\"color: #4EC9B0\">Integer<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #D4D4D4\">) As <\/span><span style=\"color: #4EC9B0\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> szMsg <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">String<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">Empty<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> Not MyConnection.<\/span><span style=\"color: #9CDCFE\">State<\/span><span style=\"color: #D4D4D4\"> = ConnectionState.Open <\/span><span style=\"color: #C586C0\">Then<\/span><span style=\"color: #D4D4D4\"> MyConnection.<\/span><span style=\"color: #DCDCAA\">Open<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Using sbc As<\/span><span style=\"color: #569CD6\"> New <\/span><span style=\"color: #DCDCAA\">SqlBulkCopy<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">MyConnection<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                sbc.<\/span><span style=\"color: #9CDCFE\">DestinationTableName<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #9CDCFE\"> DestinationTbl<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                sbc.<\/span><span style=\"color: #9CDCFE\">BatchSize<\/span><span style=\"color: #D4D4D4\"> =<\/span><span style=\"color: #9CDCFE\"> BatchSize<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #6A9955\">&#39; Map Columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">For<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">Each<\/span><span style=\"color: #D4D4D4\"> cColumn As <\/span><span style=\"color: #4EC9B0\">DataColumn<\/span><span style=\"color: #D4D4D4\"> In DataTable.Columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    sbc.ColumnMappings.<\/span><span style=\"color: #DCDCAA\">Add<\/span><span style=\"color: #D4D4D4\">(cColumn.ColumnName, cColumn.<\/span><span style=\"color: #9CDCFE\">ColumnName<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">Next<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                sbc.<\/span><span style=\"color: #DCDCAA\">WriteToServer<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">DataTable<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Catch exSql As <\/span><span style=\"color: #4EC9B0\">SqlException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> exSql.Message.ToLower.<\/span><span style=\"color: #DCDCAA\">Contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;received an invalid column length from the bcp client for colid&quot;<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #C586C0\">Then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> pattern <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">String<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;\\d+&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> match <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Match<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Regex<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Match<\/span><span style=\"color: #D4D4D4\">(exSql.Message.<\/span><span style=\"color: #DCDCAA\">ToString<\/span><span style=\"color: #D4D4D4\">(),<\/span><span style=\"color: #9CDCFE\"> pattern<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> index <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Integer<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Convert<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ToInt32<\/span><span style=\"color: #D4D4D4\">(match.<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">) - <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> fi <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">FieldInfo<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">SqlBulkCopy<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">GetField<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;_sortedColumnMappings&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                              BindingFlags.NonPublic Or BindingFlags.<\/span><span style=\"color: #9CDCFE\">Instance<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> sortedColumns <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = fi.<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">sbc<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> items <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\">() = <\/span><span style=\"color: #DCDCAA\">CType<\/span><span style=\"color: #D4D4D4\">(sortedColumns.<\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">GetField<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;_items&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                       BindingFlags.NonPublic Or BindingFlags.<\/span><span style=\"color: #9CDCFE\">Instance<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">sortedColumns<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #DCDCAA\">Object<\/span><span style=\"color: #D4D4D4\">())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> itemData <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">FieldInfo<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">items<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">index<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">GetField<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;_metadata&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 BindingFlags.NonPublic Or <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                 BindingFlags.<\/span><span style=\"color: #9CDCFE\">Instance<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> metadata <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = itemData.<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">items<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">index<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> column <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = metadata.<\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">GetField<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;column&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.<\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Or <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.NonPublic Or <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.<\/span><span style=\"color: #9CDCFE\">Instance<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">metadata<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">Dim<\/span><span style=\"color: #9CDCFE\"> length <\/span><span style=\"color: #D4D4D4\">As <\/span><span style=\"color: #4EC9B0\">Object<\/span><span style=\"color: #D4D4D4\"> = metadata.<\/span><span style=\"color: #DCDCAA\">GetType<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">GetField<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;length&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.<\/span><span style=\"color: #569CD6\">Public<\/span><span style=\"color: #D4D4D4\"> Or <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.NonPublic Or <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                             BindingFlags.<\/span><span style=\"color: #9CDCFE\">Instance<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">GetValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">metadata<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">szMsg<\/span><span style=\"color: #D4D4D4\"> = $<\/span><span style=\"color: #CE9178\">&quot;Column: {column} contains data with a length greater than: {length}&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">Else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">szMsg<\/span><span style=\"color: #D4D4D4\"> = exSql.Message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">End If<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            Catch ex As <\/span><span style=\"color: #4EC9B0\">Exception<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">szMsg<\/span><span style=\"color: #D4D4D4\"> = ex.Message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Try<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">End<\/span><span style=\"color: #D4D4D4\"> Using<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">Return<\/span><span style=\"color: #D4D4D4\"> szMsg<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">End Function<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Performs a bulk insert operation from a&nbsp;DataTable&nbsp;into a specified SQL Server table using&nbsp;SqlBulkCopy&nbsp;. This function maps each column from the&nbsp;DataTable&nbsp;to the destination SQL table by column name. If a known&nbsp;SqlException&nbsp;related to column length mismatch occurs, the error message will include the column name and maximum allowed length. This function uses reflection to extract internal metadata [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":810,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-815","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/comments?post=815"}],"version-history":[{"count":5,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/815\/revisions"}],"predecessor-version":[{"id":824,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/815\/revisions\/824"}],"up":[{"embeddable":true,"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/pages\/810"}],"wp:attachment":[{"href":"https:\/\/www.silverice.it\/IpercubeTechWP1\/wp-json\/wp\/v2\/media?parent=815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}