Ceci est une ancienne révision du document !


sqlBulkCopy

Voici un exemple de source powershell qui permet de copier une table vers une autre.

$SrcServer=  "ServeurSource"
$SrcDatabase = "BaseSource"
$SrcTable = "TableSource"
$DestServer=  "ServeurDestination"
$DestDatabase = "BaseDestination"
$DestTable = "TableDestination"
$auth = "Active Directory Integrated"

$SrcConnStr = "Server = $SrcServer; Database = $SrcDatabase; Authentication = $auth; TrustServerCertificate = True;"
$SrcConn  = New-Object System.Data.SqlClient.SQLConnection($SrcConnStr)


$CmdText = “SELECT * FROM “ + $SrcTable

$SqlCommand = New-Object system.Data.SqlClient.SqlCommand($CmdText, $SrcConn) 
$SrcConn.Open()

$SqlReader = $SqlCommand.ExecuteReader()

$DestConnStr = "Server = $DestServer; Database = $DestDatabase; Authentication = $auth; TrustServerCertificate = True;"
$DestConn  = New-Object System.Data.SqlClient.SQLConnection($DestConnStr)

# Empty destination table
$sqlcmd = new-object "System.data.sqlclient.sqlcommand"
$sqlcmd.connection = $DestConn

$strsql = 'TRUNCATE TABLE [dbo].[ANNEXE_REGLEANNEXE2]'
$sqlcmd = new-object "System.data.sqlclient.sqlcommand"
$sqlcmd.CommandText = $strsql
$adapter = New-Object system.data.sqlclient.sqldataadapter ($sqlcmd.CommandText, $DestConn)
$set = New-Object system.data.dataset
$adapter.Fill($set)

# Bulkcopy to the destination table
$bulkCopy = New-Object Data.SqlClient.SqlBulkCopy($DestConnStr, [System.Data.SqlClient.SqlBulkCopyOptions]::KeepIdentity)
$bulkCopy.DestinationTableName = $DestTable
$bulkCopy.WriteToServer($sqlReader)

$SqlReader.close()
$SrcConn.Close()
$SrcConn.Dispose()
$bulkCopy.Close()