Invoke-Sqlcmd:找不到存储过程
Invoke-Sqlcmd : Could not find stored procedure
我有一个 SQL 数据库 table 的转储,其中只包含数据。它是一长串 INSERT 语句。该文件大约 10GB,当我尝试使用 Invoke-Sqlcmd 或 SQL Server management studio 导入时,它失败并显示消息“内存不足”。因此,我将文件拆分为几个 250MB 的小文件。所有的行都是完整的,所以在每个文件的末尾或开头没有半个 INSERT 语句,因为拆分文件。
当我使用 Powershell 导入数据时,第一个文件导入没有问题。
Invoke-Sqlcmd -ServerInstance myserver\instance -Database mydatabase -InputFile "C:\temp\files\dbo.Data.00.sql"
每当我尝试导入下一个文件时,我都会收到以下错误消息。
Invoke-Sqlcmd : Could not find stored procedure 'I'.
At line:1 char:1
+ Invoke-Sqlcmd -ServerInstance myserver\instance -Database mydatabase -I ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionExceptio
+ FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
它提到找不到存储过程,但它只是 INSERT 语句。我还尝试在第一个 INSERT 语句之前指定数据库名称,但这不会改变结果。
USE [mydatabase]
知道这里出了什么问题。
我设法通过将转储文件复制到 Linux 主机并使用以下命令将文件拆分为每个 250.000 行的文件来解决此问题。
split -l 250000 dbo.Data.sql
拆分文件仍然存在问题。除第一个文件外,所有文件的每个字符之间都包含 NUL 字符。
我使用了以下解决方案来删除 NUL 字符。
Removing "NUL" characters
通过对除第一个文件之外的所有拆分文件执行以下命令。
tr < xab -d '[=11=]0' > xab.dbo.Data.sql
tr < xac -d '[=11=]0' > xac.dbo.Data.sql
etc...
我有一个 SQL 数据库 table 的转储,其中只包含数据。它是一长串 INSERT 语句。该文件大约 10GB,当我尝试使用 Invoke-Sqlcmd 或 SQL Server management studio 导入时,它失败并显示消息“内存不足”。因此,我将文件拆分为几个 250MB 的小文件。所有的行都是完整的,所以在每个文件的末尾或开头没有半个 INSERT 语句,因为拆分文件。
当我使用 Powershell 导入数据时,第一个文件导入没有问题。
Invoke-Sqlcmd -ServerInstance myserver\instance -Database mydatabase -InputFile "C:\temp\files\dbo.Data.00.sql"
每当我尝试导入下一个文件时,我都会收到以下错误消息。
Invoke-Sqlcmd : Could not find stored procedure 'I'. At line:1 char:1 + Invoke-Sqlcmd -ServerInstance myserver\instance -Database mydatabase -I ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionExceptio + FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
它提到找不到存储过程,但它只是 INSERT 语句。我还尝试在第一个 INSERT 语句之前指定数据库名称,但这不会改变结果。
USE [mydatabase]
知道这里出了什么问题。
我设法通过将转储文件复制到 Linux 主机并使用以下命令将文件拆分为每个 250.000 行的文件来解决此问题。
split -l 250000 dbo.Data.sql
拆分文件仍然存在问题。除第一个文件外,所有文件的每个字符之间都包含 NUL 字符。
我使用了以下解决方案来删除 NUL 字符。 Removing "NUL" characters
通过对除第一个文件之外的所有拆分文件执行以下命令。
tr < xab -d '[=11=]0' > xab.dbo.Data.sql
tr < xac -d '[=11=]0' > xac.dbo.Data.sql
etc...