Artifact
ecb3d9eba77c025aeb376bfecdaabe18261e3f20b19e5e3d0c9d6e8a45fb836a:
- File
Write-DataTable.ps1
— part of check-in
[b1bdbee710]
at
2018-06-10 13:32:09
on branch trunk
— Writes data only to SQL Server tables. However, the data source is not limited to SQL Server; any data source can be used, as long as the data can be loaded to a DataTable instance or read with a IDataReader instance.
(user:
Chad Miller
size: 3472)
0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69 # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73 i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 57 hell..# title: W
0030: 72 69 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a rite-DataTable..
0040: 23 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 57 # description: W
0050: 72 69 74 65 73 20 64 61 74 61 20 6f 6e 6c 79 20 rites data only
0060: 74 6f 20 53 51 4c 20 53 65 72 76 65 72 20 74 61 to SQL Server ta
0070: 62 6c 65 73 2e 20 48 6f 77 65 76 65 72 2c 20 74 bles. However, t
0080: 68 65 20 64 61 74 61 20 73 6f 75 72 63 65 20 69 he data source i
0090: 73 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f s not limited to
00a0: 20 53 51 4c 20 53 65 72 76 65 72 3b 20 61 6e 79 SQL Server; any
00b0: 20 64 61 74 61 20 73 6f 75 72 63 65 20 63 61 6e data source can
00c0: 20 62 65 20 75 73 65 64 2c 20 61 73 20 6c 6f 6e be used, as lon
00d0: 67 20 61 73 20 74 68 65 20 64 61 74 61 20 63 61 g as the data ca
00e0: 6e 20 62 65 20 6c 6f 61 64 65 64 20 74 6f 20 61 n be loaded to a
00f0: 20 44 61 74 61 54 61 62 6c 65 20 69 6e 73 74 61 DataTable insta
0100: 6e 63 65 20 6f 72 20 72 65 61 64 20 77 69 74 68 nce or read with
0110: 20 61 20 49 44 61 74 61 52 65 61 64 65 72 20 69 a IDataReader i
0120: 6e 73 74 61 6e 63 65 2e 0d 0a 23 20 76 65 72 73 nstance...# vers
0130: 69 6f 6e 3a 20 31 2e 30 0d 0a 23 20 74 79 70 65 ion: 1.0..# type
0140: 3a 20 73 63 72 69 70 74 0d 0a 23 20 61 75 74 68 : script..# auth
0150: 6f 72 3a 20 43 68 61 64 20 4d 69 6c 6c 65 72 0d or: Chad Miller.
0160: 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d .# license: CC0.
0170: 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 57 72 69 .# function: Wri
0180: 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a 23 20 te-DataTable..#
0190: 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33 x-poshcode-id: 3
01a0: 38 35 31 0d 0a 23 20 78 2d 61 72 63 68 69 76 65 851..# x-archive
01b0: 64 3a 20 32 30 31 36 2d 30 35 2d 32 31 54 31 33 d: 2016-05-21T13
01c0: 3a 31 34 3a 32 37 0d 0a 23 20 78 2d 70 75 62 6c :14:27..# x-publ
01d0: 69 73 68 65 64 3a 20 32 30 31 33 2d 31 32 2d 33 ished: 2013-12-3
01e0: 31 54 30 37 3a 31 34 3a 30 30 0d 0a 23 0d 0a 23 1T07:14:00..#..#
01f0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ..##############
0200: 23 23 23 23 23 23 23 23 23 0d 0a 3c 23 0d 0a 2e #########..<#...
0210: 53 59 4e 4f 50 53 49 53 0d 0a 57 72 69 74 65 73 SYNOPSIS..Writes
0220: 20 64 61 74 61 20 6f 6e 6c 79 20 74 6f 20 53 51 data only to SQ
0230: 4c 20 53 65 72 76 65 72 20 74 61 62 6c 65 73 2e L Server tables.
0240: 0d 0a 2e 44 45 53 43 52 49 50 54 49 4f 4e 0d 0a ...DESCRIPTION..
0250: 57 72 69 74 65 73 20 64 61 74 61 20 6f 6e 6c 79 Writes data only
0260: 20 74 6f 20 53 51 4c 20 53 65 72 76 65 72 20 74 to SQL Server t
0270: 61 62 6c 65 73 2e 20 48 6f 77 65 76 65 72 2c 20 ables. However,
0280: 74 68 65 20 64 61 74 61 20 73 6f 75 72 63 65 20 the data source
0290: 69 73 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 is not limited t
02a0: 6f 20 53 51 4c 20 53 65 72 76 65 72 3b 20 61 6e o SQL Server; an
02b0: 79 20 64 61 74 61 20 73 6f 75 72 63 65 20 63 61 y data source ca
02c0: 6e 20 62 65 20 75 73 65 64 2c 20 61 73 20 6c 6f n be used, as lo
02d0: 6e 67 20 61 73 20 74 68 65 20 64 61 74 61 20 63 ng as the data c
02e0: 61 6e 20 62 65 20 6c 6f 61 64 65 64 20 74 6f 20 an be loaded to
02f0: 61 20 44 61 74 61 54 61 62 6c 65 20 69 6e 73 74 a DataTable inst
0300: 61 6e 63 65 20 6f 72 20 72 65 61 64 20 77 69 74 ance or read wit
0310: 68 20 61 20 49 44 61 74 61 52 65 61 64 65 72 20 h a IDataReader
0320: 69 6e 73 74 61 6e 63 65 2e 0d 0a 2e 49 4e 50 55 instance....INPU
0330: 54 53 0d 0a 4e 6f 6e 65 0d 0a 20 20 20 20 59 6f TS..None.. Yo
0340: 75 20 63 61 6e 6e 6f 74 20 70 69 70 65 20 6f 62 u cannot pipe ob
0350: 6a 65 63 74 73 20 74 6f 20 57 72 69 74 65 2d 44 jects to Write-D
0360: 61 74 61 54 61 62 6c 65 0d 0a 2e 4f 55 54 50 55 ataTable...OUTPU
0370: 54 53 0d 0a 4e 6f 6e 65 0d 0a 20 20 20 20 50 72 TS..None.. Pr
0380: 6f 64 75 63 65 73 20 6e 6f 20 6f 75 74 70 75 74 oduces no output
0390: 0d 0a 2e 45 58 41 4d 50 4c 45 0d 0a 24 64 74 20 ...EXAMPLE..$dt
03a0: 3d 20 49 6e 76 6f 6b 65 2d 53 71 6c 63 6d 64 32 = Invoke-Sqlcmd2
03b0: 20 2d 53 65 72 76 65 72 49 6e 73 74 61 6e 63 65 -ServerInstance
03c0: 20 22 5a 30 30 33 5c 52 32 22 20 2d 44 61 74 61 "Z003\R2" -Data
03d0: 62 61 73 65 20 70 75 62 73 20 22 73 65 6c 65 63 base pubs "selec
03e0: 74 20 2a 20 20 66 72 6f 6d 20 61 75 74 68 6f 72 t * from author
03f0: 73 22 0d 0a 57 72 69 74 65 2d 44 61 74 61 54 61 s"..Write-DataTa
0400: 62 6c 65 20 2d 53 65 72 76 65 72 49 6e 73 74 61 ble -ServerInsta
0410: 6e 63 65 20 22 5a 30 30 33 5c 52 32 22 20 2d 44 nce "Z003\R2" -D
0420: 61 74 61 62 61 73 65 20 70 75 62 73 63 6f 70 79 atabase pubscopy
0430: 20 2d 54 61 62 6c 65 4e 61 6d 65 20 61 75 74 68 -TableName auth
0440: 6f 72 73 20 2d 44 61 74 61 20 24 64 74 0d 0a 54 ors -Data $dt..T
0450: 68 69 73 20 65 78 61 6d 70 6c 65 20 6c 6f 61 64 his example load
0460: 73 20 61 20 76 61 72 69 61 62 6c 65 20 64 74 20 s a variable dt
0470: 6f 66 20 74 79 70 65 20 44 61 74 61 54 61 62 6c of type DataTabl
0480: 65 20 66 72 6f 6d 20 71 75 65 72 79 20 61 6e 64 e from query and
0490: 20 77 72 69 74 65 20 74 68 65 20 64 61 74 61 74 write the datat
04a0: 61 62 6c 65 20 74 6f 20 61 6e 6f 74 68 65 72 20 able to another
04b0: 64 61 74 61 62 61 73 65 0d 0a 2e 4e 4f 54 45 53 database...NOTES
04c0: 0d 0a 57 72 69 74 65 2d 44 61 74 61 54 61 62 6c ..Write-DataTabl
04d0: 65 20 75 73 65 73 20 74 68 65 20 53 71 6c 42 75 e uses the SqlBu
04e0: 6c 6b 43 6f 70 79 20 63 6c 61 73 73 20 73 65 65 lkCopy class see
04f0: 20 6c 69 6e 6b 73 20 66 6f 72 20 61 64 64 69 74 links for addit
0500: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f ional informatio
0510: 6e 20 6f 6e 20 74 68 69 73 20 63 6c 61 73 73 2e n on this class.
0520: 0d 0a 56 65 72 73 69 6f 6e 20 48 69 73 74 6f 72 ..Version Histor
0530: 79 0d 0a 76 31 2e 30 20 20 20 2d 20 43 68 61 64 y..v1.0 - Chad
0540: 20 4d 69 6c 6c 65 72 20 2d 20 49 6e 69 74 69 61 Miller - Initia
0550: 6c 20 72 65 6c 65 61 73 65 0d 0a 76 31 2e 31 20 l release..v1.1
0560: 20 20 2d 20 43 68 61 64 20 4d 69 6c 6c 65 72 20 - Chad Miller
0570: 2d 20 46 69 78 65 64 20 65 72 72 6f 72 20 6d 65 - Fixed error me
0580: 73 73 61 67 65 0d 0a 76 31 2e 32 20 20 20 2d 20 ssage..v1.2 -
0590: 42 2e 20 48 6f 6c 6c 69 67 65 72 20 2d 20 41 64 B. Holliger - Ad
05a0: 64 73 20 63 6f 6c 75 6d 6e 20 6d 61 70 70 69 6e ds column mappin
05b0: 67 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 73 g according to s
05c0: 6f 75 72 63 65 20 74 61 62 6c 65 2c 20 61 6c 6c ource table, all
05d0: 6f 77 73 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66 ows insertion of
05e0: 20 64 61 74 61 20 69 66 20 64 65 73 74 69 6e 61 data if destina
05f0: 74 69 6f 6e 20 63 6f 6c 75 6d 6e 20 63 6f 75 6e tion column coun
0600: 74 20 64 69 66 66 65 72 73 0d 0a 2e 4c 49 4e 4b t differs...LINK
0610: 0d 0a 68 74 74 70 3a 2f 2f 6d 73 64 6e 2e 6d 69 ..http://msdn.mi
0620: 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75 crosoft.com/en-u
0630: 73 2f 6c 69 62 72 61 72 79 2f 33 30 63 33 79 35 s/library/30c3y5
0640: 39 37 25 32 38 76 3d 56 53 2e 39 30 25 32 39 2e 97%28v=VS.90%29.
0650: 61 73 70 78 0d 0a 23 3e 0d 0a 66 75 6e 63 74 69 aspx..#>..functi
0660: 6f 6e 20 57 72 69 74 65 2d 44 61 74 61 54 61 62 on Write-DataTab
0670: 6c 65 0d 0a 7b 0d 0a 20 20 20 20 5b 43 6d 64 6c le..{.. [Cmdl
0680: 65 74 42 69 6e 64 69 6e 67 28 29 5d 0d 0a 20 20 etBinding()]..
0690: 20 20 70 61 72 61 6d 28 0d 0a 20 20 20 20 5b 50 param(.. [P
06a0: 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f arameter(Positio
06b0: 6e 3d 30 2c 20 4d 61 6e 64 61 74 6f 72 79 3d 24 n=0, Mandatory=$
06c0: 74 72 75 65 29 5d 20 5b 73 74 72 69 6e 67 5d 24 true)] [string]$
06d0: 53 65 72 76 65 72 49 6e 73 74 61 6e 63 65 2c 0d ServerInstance,.
06e0: 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 . [Parameter(
06f0: 50 6f 73 69 74 69 6f 6e 3d 31 2c 20 4d 61 6e 64 Position=1, Mand
0700: 61 74 6f 72 79 3d 24 74 72 75 65 29 5d 20 5b 73 atory=$true)] [s
0710: 74 72 69 6e 67 5d 24 44 61 74 61 62 61 73 65 2c tring]$Database,
0720: 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 .. [Parameter
0730: 28 50 6f 73 69 74 69 6f 6e 3d 32 2c 20 4d 61 6e (Position=2, Man
0740: 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d 20 5b datory=$true)] [
0750: 73 74 72 69 6e 67 5d 24 54 61 62 6c 65 4e 61 6d string]$TableNam
0760: 65 2c 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 e,.. [Paramet
0770: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 33 2c 20 4d er(Position=3, M
0780: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d andatory=$true)]
0790: 20 24 44 61 74 61 2c 0d 0a 20 20 20 20 5b 50 61 $Data,.. [Pa
07a0: 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e rameter(Position
07b0: 3d 34 2c 20 4d 61 6e 64 61 74 6f 72 79 3d 24 66 =4, Mandatory=$f
07c0: 61 6c 73 65 29 5d 20 5b 73 74 72 69 6e 67 5d 24 alse)] [string]$
07d0: 55 73 65 72 6e 61 6d 65 2c 0d 0a 20 20 20 20 5b Username,.. [
07e0: 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 Parameter(Positi
07f0: 6f 6e 3d 35 2c 20 4d 61 6e 64 61 74 6f 72 79 3d on=5, Mandatory=
0800: 24 66 61 6c 73 65 29 5d 20 5b 73 74 72 69 6e 67 $false)] [string
0810: 5d 24 50 61 73 73 77 6f 72 64 2c 0d 0a 20 20 20 ]$Password,..
0820: 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 [Parameter(Posi
0830: 74 69 6f 6e 3d 36 2c 20 4d 61 6e 64 61 74 6f 72 tion=6, Mandator
0840: 79 3d 24 66 61 6c 73 65 29 5d 20 5b 49 6e 74 33 y=$false)] [Int3
0850: 32 5d 24 42 61 74 63 68 53 69 7a 65 3d 35 30 30 2]$BatchSize=500
0860: 30 30 2c 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 00,.. [Parame
0870: 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 37 2c 20 ter(Position=7,
0880: 4d 61 6e 64 61 74 6f 72 79 3d 24 66 61 6c 73 65 Mandatory=$false
0890: 29 5d 20 5b 49 6e 74 33 32 5d 24 51 75 65 72 79 )] [Int32]$Query
08a0: 54 69 6d 65 6f 75 74 3d 30 2c 0d 0a 20 20 20 20 Timeout=0,..
08b0: 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 [Parameter(Posit
08c0: 69 6f 6e 3d 38 2c 20 4d 61 6e 64 61 74 6f 72 79 ion=8, Mandatory
08d0: 3d 24 66 61 6c 73 65 29 5d 20 5b 49 6e 74 33 32 =$false)] [Int32
08e0: 5d 24 43 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65 ]$ConnectionTime
08f0: 6f 75 74 3d 31 35 0d 0a 20 20 20 20 29 0d 0a 20 out=15.. )..
0900: 20 20 20 0d 0a 20 20 20 20 24 63 6f 6e 6e 3d 6e .. $conn=n
0910: 65 77 2d 6f 62 6a 65 63 74 20 53 79 73 74 65 6d ew-object System
0920: 2e 44 61 74 61 2e 53 71 6c 43 6c 69 65 6e 74 2e .Data.SqlClient.
0930: 53 51 4c 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d SQLConnection...
0940: 0a 20 20 20 20 69 66 20 28 24 55 73 65 72 6e 61 . if ($Userna
0950: 6d 65 29 0d 0a 20 20 20 20 7b 20 24 43 6f 6e 6e me).. { $Conn
0960: 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 22 ectionString = "
0970: 53 65 72 76 65 72 3d 7b 30 7d 3b 44 61 74 61 62 Server={0};Datab
0980: 61 73 65 3d 7b 31 7d 3b 55 73 65 72 20 49 44 3d ase={1};User ID=
0990: 7b 32 7d 3b 50 61 73 73 77 6f 72 64 3d 7b 33 7d {2};Password={3}
09a0: 3b 54 72 75 73 74 65 64 5f 43 6f 6e 6e 65 63 74 ;Trusted_Connect
09b0: 69 6f 6e 3d 46 61 6c 73 65 3b 43 6f 6e 6e 65 63 ion=False;Connec
09c0: 74 20 54 69 6d 65 6f 75 74 3d 7b 34 7d 22 20 2d t Timeout={4}" -
09d0: 66 20 24 53 65 72 76 65 72 49 6e 73 74 61 6e 63 f $ServerInstanc
09e0: 65 2c 24 44 61 74 61 62 61 73 65 2c 24 55 73 65 e,$Database,$Use
09f0: 72 6e 61 6d 65 2c 24 50 61 73 73 77 6f 72 64 2c rname,$Password,
0a00: 24 43 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65 6f $ConnectionTimeo
0a10: 75 74 20 7d 0d 0a 20 20 20 20 65 6c 73 65 0d 0a ut }.. else..
0a20: 20 20 20 20 7b 20 24 43 6f 6e 6e 65 63 74 69 6f { $Connectio
0a30: 6e 53 74 72 69 6e 67 20 3d 20 22 53 65 72 76 65 nString = "Serve
0a40: 72 3d 7b 30 7d 3b 44 61 74 61 62 61 73 65 3d 7b r={0};Database={
0a50: 31 7d 3b 49 6e 74 65 67 72 61 74 65 64 20 53 65 1};Integrated Se
0a60: 63 75 72 69 74 79 3d 54 72 75 65 3b 43 6f 6e 6e curity=True;Conn
0a70: 65 63 74 20 54 69 6d 65 6f 75 74 3d 7b 32 7d 22 ect Timeout={2}"
0a80: 20 2d 66 20 24 53 65 72 76 65 72 49 6e 73 74 61 -f $ServerInsta
0a90: 6e 63 65 2c 24 44 61 74 61 62 61 73 65 2c 24 43 nce,$Database,$C
0aa0: 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65 6f 75 74 onnectionTimeout
0ab0: 20 7d 0d 0a 0d 0a 20 20 20 20 24 63 6f 6e 6e 2e }.... $conn.
0ac0: 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 ConnectionString
0ad0: 3d 24 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 =$ConnectionStri
0ae0: 6e 67 0d 0a 0d 0a 20 20 20 20 74 72 79 0d 0a 20 ng.... try..
0af0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 63 {.. $c
0b00: 6f 6e 6e 2e 4f 70 65 6e 28 29 0d 0a 20 20 20 20 onn.Open()..
0b10: 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 20 3d 20 $bulkCopy =
0b20: 6e 65 77 2d 6f 62 6a 65 63 74 20 28 22 44 61 74 new-object ("Dat
0b30: 61 2e 53 71 6c 43 6c 69 65 6e 74 2e 53 71 6c 42 a.SqlClient.SqlB
0b40: 75 6c 6b 43 6f 70 79 22 29 20 24 63 6f 6e 6e 65 ulkCopy") $conne
0b50: 63 74 69 6f 6e 53 74 72 69 6e 67 0d 0a 20 20 20 ctionString..
0b60: 20 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 2e 44 $bulkCopy.D
0b70: 65 73 74 69 6e 61 74 69 6f 6e 54 61 62 6c 65 4e estinationTableN
0b80: 61 6d 65 20 3d 20 24 74 61 62 6c 65 4e 61 6d 65 ame = $tableName
0b90: 0d 0a 20 20 20 20 20 20 20 20 23 20 53 65 74 20 .. # Set
0ba0: 6d 61 70 70 69 6e 67 73 20 61 63 63 6f 72 64 69 mappings accordi
0bb0: 6e 67 20 73 6f 75 72 63 65 20 74 61 62 6c 65 0d ng source table.
0bc0: 0a 20 20 20 20 20 20 20 20 24 64 61 74 61 20 7c . $data |
0bd0: 20 47 65 74 2d 4d 65 6d 62 65 72 20 2d 4d 65 6d Get-Member -Mem
0be0: 62 65 72 54 79 70 65 20 50 72 6f 70 65 72 74 79 berType Property
0bf0: 20 7c 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 | Select-Object
0c00: 20 2d 45 78 70 61 6e 64 50 72 6f 70 65 72 74 79 -ExpandProperty
0c10: 20 4e 61 6d 65 20 7c 20 46 6f 72 45 61 63 68 2d Name | ForEach-
0c20: 4f 62 6a 65 63 74 20 7b 0d 0a 20 20 20 20 20 20 Object {..
0c30: 20 20 20 20 20 20 5b 76 6f 69 64 5d 24 62 75 6c [void]$bul
0c40: 6b 43 6f 70 79 2e 43 6f 6c 75 6d 6e 4d 61 70 70 kCopy.ColumnMapp
0c50: 69 6e 67 73 2e 41 64 64 28 24 5f 2c 20 24 5f 29 ings.Add($_, $_)
0c60: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 .. }..
0c70: 20 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 2e 42 $bulkCopy.B
0c80: 61 74 63 68 53 69 7a 65 20 3d 20 24 42 61 74 63 atchSize = $Batc
0c90: 68 53 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 24 hSize.. $
0ca0: 62 75 6c 6b 43 6f 70 79 2e 42 75 6c 6b 43 6f 70 bulkCopy.BulkCop
0cb0: 79 54 69 6d 65 6f 75 74 20 3d 20 24 51 75 65 72 yTimeout = $Quer
0cc0: 79 54 69 6d 65 4f 75 74 0d 0a 20 20 20 20 20 20 yTimeOut..
0cd0: 20 20 24 62 75 6c 6b 43 6f 70 79 2e 57 72 69 74 $bulkCopy.Writ
0ce0: 65 54 6f 53 65 72 76 65 72 28 24 44 61 74 61 29 eToServer($Data)
0cf0: 0d 0a 20 20 20 20 20 20 20 20 24 63 6f 6e 6e 2e .. $conn.
0d00: 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7d 0d 0a Close().. }..
0d10: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 7b catch.. {
0d20: 0d 0a 20 20 20 20 20 20 20 20 24 65 78 20 3d 20 .. $ex =
0d30: 24 5f 2e 45 78 63 65 70 74 69 6f 6e 0d 0a 20 20 $_.Exception..
0d40: 20 20 20 20 20 20 57 72 69 74 65 2d 45 72 72 6f Write-Erro
0d50: 72 20 22 24 65 78 2e 4d 65 73 73 61 67 65 22 0d r "$ex.Message".
0d60: 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 . continu
0d70: 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 7d 20 23 57 e.. }....} #W
0d80: 72 69 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a rite-DataTable..