我试图在本地SQL Server安装上重新创建一个远程数据库.我有一个从远程数据库SSMS生成的〜(6GB).sql文件,并在本地使用sqlcmd来尝试导入.
这是我正在使用的命令:
sqlcmd -S SERVER -a 32000 -i inputfile.sql -o output.txt
Run Code Online (Sandbox Code Playgroud)
大约2200条记录给了我: Unclosed quotation mark after the character string
我可以在导入设置上做些什么(甚至创建一个新的导出的.sql文件)来解决这个问题吗?服务器生成的sql似乎不是有效的sql,这是非常奇怪的.
小智 6
此Stackoverflow线程将证明对您有用.相关细节如下:
问题描述:
在极少数情况下,sqlcmd实用程序可能会因导入而失败并引发以下错误:"字符串后面的未闭合引号..."表示尚未执行其中一个SQL查询.发生这种情况是因为sqlcmd使用流处理,即它读取一些数据,处理它,读取下一块等等.在某些情况下,输入文件可能包含巨大的SQL指令,其大小大于sqlcmd一次可处理的数据量,因此sqlcmd尝试执行损坏的SQL并失败.
可能解决方案
sqlcmd实用程序可以接受"-a"参数,该参数定义将在处理期间使用的数据包(数据片段)的最大大小.最大值为32767,默认值为4096,因此始终将此参数与最大值一起使用是有意义的.
sqlcmd -i input.sql -a 32767 -o import_log.txt
Run Code Online (Sandbox Code Playgroud)
替代方案
如果上述操作失败,您可能需要考虑使用批量复制(BCP)实用程序.我相信它是目前将数据从远程源移动到本地克隆的最快方法,反之亦然.您可以在此处找到更多详细信息:https://blogs.msdn.microsoft.com/sqlcat/2010/07/30/loading-data-to-sql-azure-the-fast-way/
bcp AdventureWorksLTAZ2008R2.SalesLT.Customer out C:\Users\user\Documents\GetDataFromSQLAzure.txt -c -U username@servername -S tcp:servername.database.windows.net -P password
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2873 次 |
| 最近记录: |