如何执行多个“;在值中插入“;在Microsoft SQL Server中立即执行语句

如何执行多个“;在值中插入“;在Microsoft SQL Server中立即执行语句,sql,sql-server,Sql,Sql Server,我正在执行声明 insert into [dbo].[Table_1] values ('43546354354', '35435454351', 'vvish', GETDATE(), 'vvish', GETDATE()) 总共有154155行。我尝试了,但出现了以下错误 脚本超出了Transact-SQL IntelliSense最大脚本大小设置。您可以在“工具/选项”菜单中的文本编辑器/Transact-SQL/IntelliSense页面上更改设置 我还访问了Tools=>Opti

我正在执行声明

insert into [dbo].[Table_1] 
values ('43546354354', '35435454351', 'vvish', GETDATE(), 'vvish', GETDATE())
总共有154155行。我尝试了,但出现了以下错误

脚本超出了Transact-SQL IntelliSense最大脚本大小设置。您可以在“工具/选项”菜单中的文本编辑器/Transact-SQL/IntelliSense页面上更改设置

我还访问了Tools=>Options=>TextEditor=>Transact-sql=>Intellisense,并将“最大脚本大小增加到5MB”


我尝试将每50000行移动到不同的脚本,但移动和执行需要很长时间。我有许多其他大小相同的脚本。有什么建议请帮助我

具有多个连接。时期说真的,这已经是SQL Server的一个限制(一个连接一次只能操作一件事——MARS很好,但您仍然只能每行发送和执行一条语句)

所以,运行一个行池,让X个线程分别打开一个连接,然后通过一行接一行地发送

或者分割文件并并行执行-相同的概念,但不是每行一行


或者直接使用一段代码来解析它们并使用SqlGBulkLoad。语句本身不应该这样编写,有比处理sql语句更有效的方法来批量加载数据。

您可以通过在单个
插入中附加多个元组来提高性能。。。值
语句:

insert into [dbo].[Table_1] 
  values ('43546354354', '35435454351', 'vvish', GETDATE(), 'vvish', GETDATE()),
         ('43546354355', '35435454352', 'vvisx', GETDATE(), 'vvisx', GETDATE()) 

但即使语句较少,也会遇到最大文件大小限制。

这取决于一些其他因素。 如果您的表没有触发器、索引等,则可以使用“sqlcmd”命令进行加载。 只需生成脚本并将其放入文件中。然后,您可以在Windows NT Shell中运行以下脚本:

sqlcmd -S MyServer -d MyDatabase -E -I -i MyScript.sql

但是,正如TomTom所建议的,有更漂亮/更快的方法从文件直接加载,而不是生成脚本。

您可以构建一个存储过程来处理插入,并让该存储过程将用户定义的表类型作为参数,这将允许您将数据作为表传递给存储过程,并且存储过程可以根据需要长时间运行。我做了一个危险的假设,即您正在从某种文件中获取数据并开发这些sql命令,因此我建议使用C#with dapper传递创建并将数据表传递给存储过程

您列出的错误与IntelliSense有关,而与您的查询无关

IntelliSense说,“嘿,这东西太大了,我甚至不想尝试。”

我怀疑您使用了Redgate或类似的工具来生成更新脚本,发现它太大,然后将其分解成碎片

你需要做的是确保你有

使用[YourDataBaseName] 去

在每个查询的顶部


然后,当您执行时,应该会列出您的结果。

看起来,您是从其他数据库获得生成的insert脚本,并且正在尝试将数据插入到当前数据库中。因此,我的建议是,如果可能的话,尝试使用“导出导入向导”插入数据,而不是生成插入脚本。谢谢。我没有从其他数据库生成插入脚本。但我是从Excel电子表格生成的。现在,我将使用SSIS从Excel工作表中获取数据到表中。谢谢你的建议。