Данные об ошибке вставки Powershell sql будут усечены, удаленные данные и все равно получат ошибку

У меня есть сценарий powershell, который я пытаюсь использовать для записи данных из источника .txt в таблицу SQL.

Import-Csv $_.fullname -Header Z_AP_EXNUM,Z_AP_ID | ForEach-Object {Invoke-Sqlcmd `
        -Database $database -ServerInstance $server -Username $uid -Password $pwd `
        -Query "insert into $table VALUES ('$_.Z_AP_EXNUM','$_.Z_AP_ID')"

Мой фактический код имеет около 293 заголовков/столбцов для вставки. Ошибка, которую я получаю, заключается в том, что строки или двоичные данные будут усечены. Заявление было прекращено. Я зашел в один из своих тестовых файлов и удалил все данные, кроме нескольких стандартных полей, и все еще получаю эти ошибки. Я не уверен, что может привести к сбою вставки.

Ошибка:

Invoke-Sqlcmd : Строковые или двоичные данные будут усечены. Заявление было прекращено. В C:\Users***\Desktop\script\scripy.ps1:79 char:111 + Z_AP_STR_CSEM5_9,Z_AP_STR_NAME5_10,Z_AP_STR_SCOR5_10,Z_AP_STR_CSEM5_10 | ForEach-Object {Invoke-Sqlcmd ‹‹‹‹ ` + CategoryInfo: InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException + FullyQualifiedErrorId: SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand


person JoehB.    schedule 29.04.2016    source источник


Ответы (1)


Проверьте схему таблицы, эта ошибка обычно появляется из-за разницы между типом определения столбца в таблице и типом данных powershell, который вы хотите хранить в ней.

person majkinetor    schedule 29.04.2016
comment
Я просматривал поля, и все типы данных кажутся согласованными, я удалил все данные из одного тестового файла, кроме простого числового поля, и все равно получил ту же ошибку, не уверен, что пустое поле вызывает проблему. - person JoehB.; 02.05.2016
comment
Правилен ли мой синтаксис в запросе, или я передаю буквальное имя поля из-за кавычек. - person JoehB.; 02.05.2016
comment
Я понял это, это была синтаксическая ошибка с запросом, я полагаю, что он передавал литерал. Я изменил свой код, чтобы избежать кавычек, и назначил заголовки vars, и теперь он работает. аналогично вставить в $table (имя файла, размер) VALUES ('$Name',` '$FileSize`') } - person JoehB.; 02.05.2016