sqlserver执行超过100m,或者大于1g的sql脚本 解决方案

什么是 Osql?

osql 是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件!

如何使用 Osql?

在开始->运行 中键入cmd,使用 "OSQL -?"命令,就可以显示osql命令行的帮助。
注意:osql 工具的选项列表是区分大小的,在使用时注意。

 注意:在上图中我们可以看到osql 并不支持 SQL Server 2012的所有功能,如果需要使用SQL Server 2012的所有功能可以使用ocmd命令。

1、使用osql执行单个 Transact-SQL 语句

      在键入cmd与下面这一个类似的命令:

    osql -E -q "Transact-SQL statement"  

    例如:sql -E -q "use myDB select * from myTable"

    其中 -E 表示使用 Microsoft Windows NT 身份验证。

    也可以使用sa账户,具体可以看看上面的命令!

    而-q 表示运行 Transact-SQL 语句,但是在查询结束时不退出 osql。

    如要运行 Transact-SQL 语句并退出 osql,请使用 -Q 参数来代替 -q。

2、使用osql执行一个大脚本文件

     将该工具指向一个脚本文件,步骤:

    a.创建一个包含一批 Transact-SQL 语句的脚本文件(如 myfile.sql)。

    b.打开命令提示符,键入与下面类似的一个命令,然后按 ENTER 键:

    osql -E -i input_file

    其中input_file 是脚本文件及其完整路径。例如,如果脚本文件 myfile.sql 在 C:\users文件夹中,

    请将参数 myfile 替换为 C:\users\myfile.sql。

    该脚本文件的运行结果将出现在控制台窗口中。

    如果您想将运行结果定向到一个文件,请向上述命令中添加 -o output_file 参数。例如:

    osql -E -i input_file -o output_file

    其中output_file 是输出文件及其完整路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Linux 上批量导出 SqlServer 数据库中的存储过程,可以通过以下步骤实现: 1. 安装 mssql-tools,它包含了 sqlcmd 工具,可以用于执行 T-SQL 命令。可以通过以下命令安装 mssql-tools: ``` curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/msprod.repo sudo yum update sudo yum install mssql-tools unixODBC-devel ``` 2. 创建一个包含所有存储过程名称的脚本(例如,sp_list.sql),内容如下: ``` SELECT name FROM sys.objects WHERE type = 'P' ORDER BY name ``` 3. 导出存储过程,可以使用以下命令: ``` cat sp_list.sql | sqlcmd -S <server_name> -U <user_name> -P <password> -d <database_name> -h-1 -s"," -W -k1 > procedures.csv ``` 其中,<server_name> 是 SqlServer 服务器名称;<user_name> 和 <password> 是连接 SqlServer 的用户名和密码;<database_name> 是要导出存储过程的数据库名称。 该命令将执行 sp_list.sql 脚本,获取存储过程名称列表,并将结果输出到 procedures.csv 文件中,每个存储过程名称占一行。 4. 执行以下命令,批量导出存储过程: ``` while read line; do sqlcmd -S <server_name> -U <user_name> -P <password> -d <database_name> -Q "sp_helptext '$line'" | iconv -t utf-8 | sed "s/^CREATE PROCEDURE/USE <database_name> GO CREATE PROCEDURE/g" >> procedures.sql; done < procedures.csv ``` 该命令将逐行读取 procedures.csv 文件中的存储过程名称,并使用 sqlcmd 命令获取每个存储过程的定义。然后,将每个存储过程的定义输出到 procedures.sql 文件中。 注意:该命令假设存储过程名称中不包含特殊字符。如果存储过程名称中包含特殊字符(例如空格、括号等),需要在脚本中进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值