Я обычно использую Powershell для такого рода вещей.
Вот скрипт, не стесняйтесь настраивать под свои нужды. Я предполагаю, что у вашего nvarchar (max) нет разрывов строк, иначе файл с разделителями табуляции не имеет особого смысла.
##---[ Script Settings ]-------------------------------------------------------------------------------------------------------------
$sqlServer = "localhost"
$targetDbName = "AdventureWorks2008"
$reportName = "c:\result.txt"
##---[ Common Functions ]------------------------------------------------------------------------------------------------------------
function Get-Dataset {
param($sqlQuery, $sqlServer, $sqlCatalog)
# Setup SQL Connection
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server = $sqlServer; Database = $sqlCatalog; Integrated Security = True"
# Setup SQL Command
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.CommandText = $sqlQuery
$sqlCmd.Connection = $sqlConnection
$sqlCmd.CommandTimeout = 0
# Setup .NET SQLAdapter to execute and fill .NET Dataset
$sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$sqlAdapter.SelectCommand = $sqlCmd
$dataSet = New-Object System.Data.DataSet
#Execute and Get Row Count
$nRecs = $sqlAdapter.Fill($dataSet)
$sqlConnection.Close();
$dataSet
}
##---[ Main ]------------------------------------------------------------------------------------------------------------------------
$dataset = Get-DataSet "SELECT * From DatabaseLog" $sqlServer $targetDbName
$dataset.tables[0].rows |
#Format-Table -auto | Out-File $reportName -width 100000
ConvertTo-CSV -Delimiter "`t" -NoTypeInformation| Out-File $reportName
& ($reportName)